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:53 编辑
可以调试一下,观察s变量的变化,第12行 if语句 条件确实没成立过
原因是第5行s没有清零 本帖最后由 心驰神往 于 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]