鱼C论坛

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

[已解决]查错

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

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

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

x
#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时表输入结束,然后计算这组整数平均值(用累加求平均值)
我哪里有问题,运行结果的平均值不对
最佳答案
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;
}

这样修改后,你应该能够得到正确的平均值。
想知道小甲鱼最近在做啥?请访问 -> 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,则跳出循环。

修改后的代码如下:
#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;
}

这样修改后,你应该能够得到正确的平均值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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,如果不是,才进行累加和计数器的更新。另外,我们还添加了一个条件判断,以防止没有输入有效整数时计算平均值。这样应该能够解决你的问题,使得计算得到正确的平均值。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 13:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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