CS50 PSET1 CASH问题:for循环实现无输出,请求代码排查
问题排查与修复
核心错误:提前调用return终止程序
你的代码在第一个计算quarter的for循环结束后,执行了return quarter;——main函数中的return语句会直接终止整个程序,导致后续计算dime、nickel、penny的循环,以及最终求和、打印的代码完全不会被执行。所有return [变量];的语句都是多余的错误代码,必须删除。
次要问题:打印格式错误
原打印语句printf("Total coins %i: ", coins);的占位符位置错误,无法正确输出结果,需要调整格式。
修复后的完整代码
#include <stdio.h> #include "cs50.h" int main(void) { int cents; do { cents = get_int("Cash owed (in cents): "); } while (cents < 0); int quarter = 0, dime = 0, nickel = 0, penny = 0; for (; cents >= 25; quarter++) { cents -= 25; } for (; cents >= 10; dime++) { cents -= 10; } for (; cents >= 5; nickel++) { cents -= 5; } for (; cents >= 1; penny++) { cents -= 1; } int coins = quarter + dime + nickel + penny; printf("Total coins: %i\n", coins); return 0; }
额外优化说明
- 变量初始化时直接赋值为0,避免未初始化的潜在问题
- 使用
cents -= 25替代cents = cents -25,代码更简洁 main函数末尾添加return 0;,符合C语言标准规范
内容的提问来源于stack exchange,提问作者Shubhanshu
相关产品推荐
相关产品推荐

