查错
#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时表输入结束,然后计算这组整数平均值(用累加求平均值)
我哪里有问题,运行结果的平均值不对
问题出在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;
}
这样修改后,你应该能够得到正确的平均值。 问题:在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]