Eclipse IDE中C语言数组求和代码输出异常求助
问题分析与修正
问题根源
你代码中的sr和sc是局部变量,C语言里局部变量声明时若不初始化,会保留栈上的随机垃圾值。第一次计算列总和时,sc的初始值可能恰好为0(比如Eclipse当前栈状态巧合),所以得到了正确的45;但计算行总和时,sr的初始值是随机垃圾值,最终结果就是垃圾值加上45,出现类似390948的随机数。在线编译器只是刚好让sr初始值为0,这属于未定义行为,完全不可依赖。
修正后的代码
#include <stdio.h> #include <stdlib.h> int main(void) { // 初始化sr和sc为0,避免垃圾值干扰求和结果 int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}},sr=0,sc=0,i,j; // 计算列总和 for(i=0;i<3;i++){ for(j=0;j<3;j++){ sc=sc+arr[j][i]; } } printf("the sum of column =%d\n",sc); // 计算行总和 for(i=0;i<3;i++){ for(j=0;j<3;j++){ sr=sr+arr[i][j]; } } printf("the sum of row =%d\n",sr); return EXIT_SUCCESS; }
额外说明
你原代码的输出文本和计算逻辑搞反了:第一个循环是遍历列求和,却输出了"the sum of row";第二个循环是行求和,输出"the sum of column",修正时已同步调整,确保输出描述和计算结果匹配。
内容的提问来源于stack exchange,提问作者Midhun thomas
相关产品推荐
相关产品推荐

