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
相关产品推荐
相关产品推荐

