小羊爱吃小草 发表于 2023-11-7 10:02:08

查错

#include <stdio.h>

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

                scanf("%d", &n);
                sum = sum + n;
                i++;
        }

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

        return 0;
}

题目是:输入一组整数,当输入-1时表输入结束,然后计算这组整数平均值(用累加求平均值)
我哪里有问题,运行结果的平均值不对

isdkz 发表于 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,则跳出循环。

修改后的代码如下:

#include <stdio.h>

int main()
{
    int n = 0, sum = 0, i = 0;
    float aver = 0.0;
    printf("请输入一组整数,用-1表示输入结束:\n");
    while (n != -1)
    {
      scanf("%d", &n);
      if (n != -1)
      {
            sum = sum + n;
            i++;
      }
    }

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

    return 0;
}


这样修改后,你应该能够得到正确的平均值。

Mike_python小 发表于 2023-11-7 10:03:06

问题:在C语言中,输入一组整数,并计算平均值时出现了问题。请指出错误并提供解决方案。

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

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

以下是修改后的代码:


#include <stdio.h>

int main() {
    int n = 0, sum = 0, i = 0;
    float aver = 0.0;

    printf("请输入一组整数,用-1表示输入结束:\n");
    while (n != -1) {
      scanf("%d", &n);
      if (n != -1) {
            sum = sum + n;
            i++;
      }
    }

    if (i != 0) {
      aver = (float)sum / i;
      printf("平均值为:%.2f\n", aver);
    } else {
      printf("没有输入有效整数,无法计算平均值\n");
    }

    return 0;
}


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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 查错