CCCS 发表于 2021-1-25 10:40:51

if语句 条件成立却没有输出

【程序19】完数。
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数

1 #include<stdio.h>
2 main()
3 {
4   int s=0,i,j;
5   for(i=1;i<=1000;i++)
6   {
7        for(j=1;j<i;j++)
8         {
9          if(i%j==0)
10                 s = s+j;
11        }
12         if(s==i)
13           printf("%d\n",i);
14   }
15   printf("\n");
16 }

输出为:


Press any key to continue

真的很奇怪,想不明白,求帮助

zsy1998 发表于 2021-1-25 10:48:16

本帖最后由 zsy1998 于 2021-1-25 10:53 编辑

可以调试一下,观察s变量的变化,第12行 if语句 条件确实没成立过

原因是第5行s没有清零

心驰神往 发表于 2021-1-25 10:49:35

本帖最后由 心驰神往 于 2021-1-25 10:53 编辑

#include<stdio.h>
int main()
{
   int s=0,i,j;
   for(i=1;i<=1000;i++)
{
        s = 0;
          for(j=1;j<i;j++)
         {
          if(i%j==0)
                s = s+j;
      }
         if(s==i)
         printf("%d\n",i);
}
   printf("\n");
return 0;
}
楼上说的对,每次循环之前s要清零。另外int main 还有return 0;最好加上,规范点
页: [1]
查看完整版本: if语句 条件成立却没有输出