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

输入字符'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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:10:26