统计数字范围内特定数字出现次数的C++代码运行异常求助
解决数字范围中指定数字出现次数统计的代码问题
我看到你在统计指定数字范围里数字2的出现次数时遇到了代码无法运行的问题,结合你给出的代码片段,我帮你梳理下问题点并给出修复方案:
原代码的核心问题
- 函数未实现:你只在
main里声明了nofNum函数,但没有写具体的函数逻辑,编译器找不到函数体就会报错 - 语法不完整:
return...语句没有写完,正确应该是return 0;,这会直接导致编译失败 - (可选优化)在C++中,函数声明放在
main函数外部会更符合编码规范,避免作用域问题
修复后的完整代码
#include <iostream> #include <cstdio> using namespace std; // 统计单个数字中2出现的次数 int nofNum(int num) { int count = 0; while (num > 0) { if (num % 10 == 2) { count++; } num = num / 10; } return count; } int main(){ int lowerbound, upperbound, sum = 0; scanf("%d %d", &lowerbound, &upperbound); for (int i = lowerbound; i <= upperbound; ++i) { sum += nofNum(i); } printf("%d", sum); return 0; }
关键逻辑解释
nofNum函数:通过循环取数字的每一位(num % 10获取个位),判断是否为2,统计次数后将数字除以10(去掉个位),直到数字变为0- 主函数:遍历从
lowerbound到upperbound的所有数字,累加每个数字中2的出现次数,最后输出总和
测试输入2 22时,程序会输出6,和你预期的结果一致。
内容的提问来源于stack exchange,提问作者Huan
相关产品推荐
相关产品推荐

