在C中仅使用While和do while循环查找5个数字和N个数字的平均值

时间:2017-07-03 01:55:15

标签: c while-loop average do-while

我真的被困在这一直试图解决它已经很长一段时间了。 我必须写一个程序,我应该在1到10之间输入5个数字,然后计算平均值,仅使用WHILE LOOP,但是当数字不符合要求时不必退出。然后,我必须写一个相同代码的变体,但这次你可以输入你想要的所有数字,当输入0时,它必须计算平均值并退出

这是我到目前为止的地方

#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后,它会继续询问数字。反正平均值是不对的

1 个答案:

答案 0 :(得分: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);