You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算10个数字平均值得到异常大值,求C语言代码问题排查

代码问题分析及修正

你的代码存在几个关键问题,直接导致了异常大数值的输出:

  • 变量未声明:total、counter、grade、average均未指定数据类型。C语言要求必须先声明变量类型(如int)才能使用,虽然旧版标准允许隐式声明为int,但这属于不规范写法,可能引发不可预期的内存行为。
  • printf格式串完全错误:最后一行printf("%d", "average is:", average);中,%d是整数输出格式符,但你传入的第一个参数是字符串常量"average is:",printf会把该字符串的内存地址当作整数输出,这就是你看到超大数值的直接原因。正确写法需要用%s输出字符串,%d输出整数,格式串必须和参数一一对应。
  • (可选)整数除法精度丢失:如果总分不是10的倍数,total / 10会执行整数除法,直接丢弃小数部分。若需要保留小数,可以将变量改为float/double类型,执行浮点数除法。

修正后的基础版本

#include <stdio.h>

int main(void)
{
    int total = 0;
    int counter = 1;
    int grade;
    int average;

    while(counter <= 10)
    {
        printf("Enter grade: ");
        scanf("%d", &grade);
        total += grade;
        counter += 1;
    }

    average = total / 10;

    printf("average is: %d\n", average);
}

保留小数的版本

#include <stdio.h>

int main(void)
{
    int total = 0;
    int counter = 1;
    int grade;
    double average;

    while(counter <= 10)
    {
        printf("Enter grade: ");
        scanf("%d", &grade);
        total += grade;
        counter += 1;
    }

    average = (double)total / 10; // 强制转换为浮点数,避免整数除法精度丢失

    printf("average is: %.2f\n", average);
}

内容的提问来源于stack exchange,提问作者Banned

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:05:04