2017-07-03 212 views
-1

我真的坚持这一直试图解决它现在相当一段时间。 我必须编写一个程序,我应该输入1到10之间的5个数字,然后计算平均值,仅在使用LOOP时使用,但在数字不符合要求时不必退出。然后,我必须写一个相同的代码的变体,但这次你可以输入所有你想要的数字,当输入0时,它必须计算出平均值并退出查找5个数字和N个数字的平均值只用while和while循环在C中

这是我到目前为止的地方

#include <stdio.h> 

int main(void) 
{ 
    int n, i = 1; 
    float add; 
    float avg; 

    do 
    { 
     printf("enter the number %d:\n", i++); 
     scanf("%d", &n); 
     add = add + n; 
    } while(n > 0 && n < 11); 

    avg= (add/5); 

    printf("%.1f", avg); 

    return 0; 
} 

在输入5之后,它将继续询问数字。并且平均值不正确

+2

这是他们现在在大学教学的内容吗?上帝...... – Darius

+0

“舞会”必须是一个错字。我代替了“平均”在我的脑海。 – phatfingers

+0

变量'add'未初始化。 'add = add + n'产生未定义的行为。 – Pablo

回答

2

首先,您使用n作为while条件变量,但也可以作为变量来扫描输入。例如,如果我通过扫描20来启动程序,则您的while循环将在第一次交互时退出。改用你的i变量,并在每次循环执行时增加它。

do{ 
    ... 
}while(i <= 5); 

第二,如果你想在1和10之间的唯一号码,那么你应该为它编写的条件。例如:

printf("enter the number %d:\n", i); //do not increment it here! 
scanf("%d",&n); //assuming "n" as your variable to scan 
if(n > 0 && n < 11){ 
    add += n; 
    i++; //increment it here instead! 
} 

第三,为了初始化变量拿不到鞭打值

float add = 0; 
float avg = 0; 
int i = 1; 

最后,分配你的结果(不是强制性的,但因为你是使用它,我会保持它):

avg = add/5.0f 

并显示:

printf("%.1f", avg); 
+0

谢谢,我完全理解。 – antimage64

+0

另一件让我想到的问题是:如果你初始化你的''''变量,例如'i = 1',你可以改变'do-while'循环为while循环:while (我<= 5)'。请记住,“do-while”循环和“while”循环并不是一回事。 – woz