鱼C论坛

 找回密码
 立即注册
查看: 1720|回复: 2

[已解决]查错

[复制链接]
发表于 2023-11-7 10:02:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int n, sum = 0, i = 0;
  5.         float aver = 0.0;
  6.         printf("请输入一组整数,用-1表示输入结束:\n");
  7.         while(n != -1)
  8.         {

  9.                 scanf("%d", &n);
  10.                 sum = sum + n;
  11.                 i++;
  12.         }

  13.         aver = (float)sum / i;
  14.         printf("平均值为:%.2f\n", aver);

  15.         return 0;
  16. }
复制代码

题目是:输入一组整数,当输入-1时表输入结束,然后计算这组整数平均值(用累加求平均值)
我哪里有问题,运行结果的平均值不对
最佳答案
2023-11-7 10:02:24
问题出在while循环中的判断条件。在进入循环之前,你没有给变量n赋初始值,所以它的值是不确定的。在循环条件中判断n是否等于-1,但由于n的初始值不确定,所以循环可能不会执行。

为了解决这个问题,你可以将变量n的初始化放在while循环之前,例如将int n的声明改为int n = 0。这样,在循环开始时,n的值就是0,而不是不确定的。

另外,你需要在循环内部的scanf语句之后添加一个条件判断,以防止将-1添加到sum中。可以使用if语句来判断输入的值是否为-1,如果是-1,则跳出循环。

修改后的代码如下:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int n = 0, sum = 0, i = 0;
  5.     float aver = 0.0;
  6.     printf("请输入一组整数,用-1表示输入结束:\n");
  7.     while (n != -1)
  8.     {
  9.         scanf("%d", &n);
  10.         if (n != -1)
  11.         {
  12.             sum = sum + n;
  13.             i++;
  14.         }
  15.     }

  16.     aver = (float)sum / i;
  17.     printf("平均值为:%.2f\n", aver);

  18.     return 0;
  19. }
复制代码


这样修改后,你应该能够得到正确的平均值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-7 10:02:24 | 显示全部楼层    本楼为最佳答案   
问题出在while循环中的判断条件。在进入循环之前,你没有给变量n赋初始值,所以它的值是不确定的。在循环条件中判断n是否等于-1,但由于n的初始值不确定,所以循环可能不会执行。

为了解决这个问题,你可以将变量n的初始化放在while循环之前,例如将int n的声明改为int n = 0。这样,在循环开始时,n的值就是0,而不是不确定的。

另外,你需要在循环内部的scanf语句之后添加一个条件判断,以防止将-1添加到sum中。可以使用if语句来判断输入的值是否为-1,如果是-1,则跳出循环。

修改后的代码如下:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int n = 0, sum = 0, i = 0;
  5.     float aver = 0.0;
  6.     printf("请输入一组整数,用-1表示输入结束:\n");
  7.     while (n != -1)
  8.     {
  9.         scanf("%d", &n);
  10.         if (n != -1)
  11.         {
  12.             sum = sum + n;
  13.             i++;
  14.         }
  15.     }

  16.     aver = (float)sum / i;
  17.     printf("平均值为:%.2f\n", aver);

  18.     return 0;
  19. }
复制代码


这样修改后,你应该能够得到正确的平均值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-7 10:03:06 | 显示全部楼层
问题:在C语言中,输入一组整数,并计算平均值时出现了问题。请指出错误并提供解决方案。

你的代码中存在一个问题,即在while循环中的变量n没有初始化。这会导致程序的行为是未定义的,因为n的初始值无法确定。这可能会影响你计算平均值的结果。

为了解决这个问题,你可以将n的初始化放到循环之前,以确保它有一个合理的初始值。另外,在计算平均值时,应当将最后一次输入的-1排除在外,因为它不应当计入平均值的计算中。

以下是修改后的代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int n = 0, sum = 0, i = 0;
  4.     float aver = 0.0;
  5.     printf("请输入一组整数,用-1表示输入结束:\n");
  6.     while (n != -1) {
  7.         scanf("%d", &n);
  8.         if (n != -1) {
  9.             sum = sum + n;
  10.             i++;
  11.         }
  12.     }
  13.     if (i != 0) {
  14.         aver = (float)sum / i;
  15.         printf("平均值为:%.2f\n", aver);
  16.     } else {
  17.         printf("没有输入有效整数,无法计算平均值\n");
  18.     }
  19.     return 0;
  20. }
复制代码

在修改后的代码中,我们首先对n进行了初始化,然后在循环中检查了n是否为-1,如果不是,才进行累加和计数器的更新。另外,我们还添加了一个条件判断,以防止没有输入有效整数时计算平均值。这样应该能够解决你的问题,使得计算得到正确的平均值。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 01:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表