C语言Perfect Number判断代码运行无输出且报0xC0000094错误如何解决
问题原因
你遇到的报错码0xC0000094是Windows平台下整数除零异常的标识,程序崩溃没有输出的核心原因来自代码的循环逻辑错误:
- 循环变量
i初始值为0,第一次执行条件判断number % i == 0时,就会触发除以0的非法运算,程序直接强制终止,因此不会有任何打印输出。 - 额外逻辑冗余:
else{ sum = sum; }这行没有任何实际作用,可以直接删除。
修复方案
- 修改循环变量的初始值为1:完全数的正因数范围是从1开始的正整数,不存在0的情况
- 可优化循环上限为
i <= number/2,减少不必要的循环次数(大于number/2的正整数不可能是number的因数,且完全数计算因数和时本身不包含数字自身) - 可添加输入合法性校验,避免输入负数、0或者非数字的异常情况
修复后的完整代码
#include <stdio.h> int main(){ int number; int sum = 0, i; // 输入合法性校验 printf("请输入要判断的正整数:"); if(scanf("%d", &number) != 1 || number <= 0) { printf("请输入合法的正整数"); return 1; } for(i = 1; i <= number / 2; i++){ if(number % i == 0){ sum += i; } } if(sum == number){ printf("Perfect Number"); }else{ printf("Not a Perfect Number"); } return 0; }
内容的提问来源于stack exchange,提问作者George Whitesman
相关产品推荐
相关产品推荐

