这个程序里,j初始值应该为1,sum初始值应该为0,另外你打印应该在次循环完成后进行。下面是调试正确的程序:
#include<stdio.h>
int main()
{
int i,j;
for(i=6;i<1000;i++)
{
int sum=0;
for(j=1;j<=(i/2);j++)
{
if(i%j==0)
sum+=j;
//遍历 1 ~ 999
for (int n = 1 ; n <= 999; n ++) {
//通过调用函数,判断 各个数值是否是完数
int result = wanShu(n);
//如果数值是完数,打印显示
if (result) {
printf("%d\n", n);
}
}
return 0;
}
//定义一个函数,计算数值是否是完数
int wanShu(int n)
{
//定义一个变量,用来计算各因子的和
int sum = 0;
//遍历 0 ~n
for (int i = 1; i < n; i ++) {
//通过取模计算出 i 是否是 n 的因子
if (n % i == 0) {
//将 因子 i 累加到 sum 中
sum += i;
}
}
//判断 各因子的和 是否等于 n 并返回 值 方便main 函数调用时判断
if (sum == n) {
return 1;
} else{
return 0;
}