C语言的小问题,代码帮忙分析下``为什么老没显示出结果

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:41:50
#include <stdio.h>
void main()
{
int x,y,z,sum;
x=6;
y=2;
sum=0;
while(x>=y)
{
while(x%y==0)
{
z=x/y;
sum=sum+z;
}
y++;
}
if(sum==x) printf("6是完数\n");
else printf("6不是完数\n");
}

你两个while循环中有一个死循环
while(x%y==0)
{
z=x/y;
sum=sum+z;
}
若碰到有一个x能对y求余的,它就一直执行
z=x/y;
sum=sum+z;
,所以它一直在运行!!!!
按我的理解你可能要执行这种语句,以下是我改完的,你看一下是不是你所要的结果:
#include <stdio.h>
void main()
{
int x,y,z,sum;
x=6;
y=2;
sum=0;
while(x>=y)
{
if(x%y==0)
{
z=x/y;
sum=sum+z;
}
y++;
}
if(sum==x) printf("6是完数\n");
else printf("6不是完数\n");
}
这样可以吗??
有哪还不懂的话,再问我