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

CS50 Readability问题:提取计数函数后结果恒为0的排查请求

CS50 Readability习题:统计字母函数调用问题解决

问题核心

你在main函数里完全没有调用count_letters函数,全局变量letters的初始值是0,自然输出结果始终为0。虽然你声明并实现了统计函数,但没触发它的执行逻辑,统计操作根本没发生。

另外,使用全局变量不是好的编程习惯,容易引发意外的变量修改问题,建议改用函数返回值的方式处理。


修正方案1(推荐:无全局变量,利用函数返回值)

#include <cs50.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>

// 声明统计字母的函数
int count_letters(string input);

int main(void)
{
    string input = get_string("Input: ");
    // 调用统计函数并接收返回结果
    int letter_count = count_letters(input);
    printf("Letters: %i\n", letter_count);
}

int count_letters(string input)
{
    // 用局部变量存储统计结果,避免全局变量风险
    int letters = 0;
    for (int i = 0; i < strlen(input); i++)
    {
        if (isalpha(input[i]))
        {
            letters++;
        }
    }
    return letters;
}

修正方案2(保留全局变量,补全函数调用)

如果一定要用全局变量,只需在main里调用count_letters函数即可:

#include <cs50.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int count_letters(string input);
int letters;

int main(void)
{
    string input = get_string("Input: ");
    // 必须调用函数才会执行统计逻辑
    count_letters(input);
    printf("Letters: %i\n", letters);
}

int count_letters(string input)
{
    letters = 0;
    for (int i = 0; i < strlen(input); i++)
    {
        if (isalpha(input[i]))
        {
            letters++;
        }
    }
    return letters;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:15