输入字符'T'无法计算数组总和的C语言程序问题排查
问题分析与修复
你的代码核心问题有两个:
- 循环内提前return:第二个for循环里,刚完成第一次累加就判断
output == 'T'并执行return total,导致程序只计算了第一周的时长就直接退出,根本没完成所有周数的累加。 - 没有输出结果:即使计算正确,直接
return total只是返回程序的退出码,控制台不会显示这个数值,必须用printf主动打印。
你提到移if到前面后结果错误,大概率是因为循环逻辑混乱,比如把return放在了错误位置,导致累加过程被打断。
修正后的代码
#include <cs50.h> #include <stdio.h> int main (void) { int weeks = get_int("Weeks taking CS50: "); int hours [weeks]; for (int i=0; i < weeks; i++) { hours[i] = get_int("WK %i Number of hours: ", i + 1); // 周数从1开始显示,更符合日常习惯 } char output; do { output = get_char("Enter T for total hours, A for average hours per week: "); } while (output != 'T' && output != 'A'); int total = 0; // 先完成所有周数的时长累加 for (int i=0; i < weeks; i++) { total += hours[i]; } // 累加完成后再处理输出逻辑 if (output == 'T') { printf("Total hours: %d\n", total); } // 后续可在此添加平均值计算逻辑 else if (output == 'A') { float average = (float)total / weeks; printf("Average hours per week: %.1f\n", average); } return 0; // main函数正常退出返回0 }
关键修改点
- 分离累加与输出逻辑:先完成所有周的时长累加,再根据用户输入指令输出结果,避免提前退出程序。
- 用
printf打印结果:确保用户能在控制台直观看到计算出的数值。 - 可选优化:将周数提示从
WK %i调整为WK %i+1,让显示的周数从1开始,更符合日常使用习惯。
内容的提问来源于stack exchange,提问作者nwse
相关产品推荐
相关产品推荐

