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

C语言计算1到num平方和的程序编译正常但输出错误,是什么原因?

问题原因分析

导致输出异常的核心原因有两个:

  • total变量未初始化。C语言中函数内定义的局部整型变量默认不会自动清零,会保留内存中遗留的随机垃圾值,第一次累加时就从垃圾值开始计算,后续所有结果都是错的。
  • printf语句写在了for循环内部,且输出没有加任何分隔符。每次循环计算完就直接打印当前的total值,所有结果直接拼接在一起,你看到的15143055其实是5次循环各自输出的错误结果连续拼接的产物。

另外还有两个不影响本次结果但不规范的写法:循环变量i定义为double类型用来做整数遍历没有必要,且代码引入了iostream、math.h两个完全没有用到的头文件。

修正后的参考代码

#include <stdio.h>

int main()
{
    int num;
    int total = 0; // 显式初始化累加变量为0
    printf("Please enter a number:");
    scanf("%d", &num);
    for (int i = 1; i <= num; i++) {
        total += (i*i);
    }
    printf("%d", total); // 循环结束后统一输出最终结果
    return 0;
}

输入5时修正后会正确输出55,也就是1+4+9+16+25的和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:39:04