【问题标题】:Finding the average of 5 numbers and N numbers using only While and do while loop in C在 C 中仅使用 While 和 do while 循环查找 5 个数字和 N 个数字的平均值
【发布时间】:2017-07-03 01:55:14
【问题描述】:

我真的被这个问题困扰了很长一段时间以来一直在尝试解决它。 我必须编写一个程序,我应该输入 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 后它会继续询问数字。反正平均值也不对

【问题讨论】:

  • 这就是他们现在在大学里教的吗?上帝...
  • 那个“舞会”一定是错字。我在脑子里用“平均”代替。
  • 变量add 未初始化。 add = add + n 产生未定义的行为。
  • 至少有 3 种数学平均值——你要找哪一种?您被要求输入“5”这一事实可能表明我们正在寻找移动平均值
  • @Soren 我的意思是

标签: c while-loop average do-while


【解决方案1】:

首先,您将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!
}

第三,初始化你的变量,以免得到 thrash 值

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

最后,分配你的结果(不是强制性的,但既然你正在使用它,我会保留它):

avg = add/5.0f

并显示:

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

【讨论】:

  • 谢谢,我完全理解。
  • 再次阅读您的问题时我想到的另一件事:如果您初始化您的i 变量,例如i = 1,您可以将您的do-while 循环更改为while 循环:while(i &lt;= 5)。请记住,do-while 循环和while 循环不是一回事。
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2015-07-03
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多