为什么我的c语言总不显示结果?

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:19:59
main()
{int m,s,i;
for(m=2;m<=1000;m++)
{s=0;
for(i=1;i<=m;i++)
if(m%i==0) s=s+i;
if(s==m)
{printf("%d Its factors are");
for(i=1;i<=m;i++)
if(m%i==0) printf(" %d",i);
printf("\n");
}
}
这个是求1000以内完数的因数的答案,但我运行就是没结果,到底是什么原因?是程序的原因还是tc软件的原因?

程序编写有问题
主要是对for语句的掌握不好
首先看一下存在的其他问题
1.main函数中缺少个“}”
2.printf("%d Its factors are");一句中没有给“%d”进行相应的赋值,应该为:printf("%d Its factors are",m);
下面来看看for的应用,因为你写的是i<=m所以它计算的时候一直计算到了他的本身,每一个数都能被本身整除,所以累加到s时,肯定不相等了。例如6是符合的数字,但是,计算结果却是1+2+3+6肯定不能等于6了
所以应该将相应的i<=m改为i<m

#include <stdio.h>
void main()
{
int m,s,i;
for(m=2;m<=1000;m++)
{s=0;
for(i=1;i<=m;i++)
{
if(m%i==0) s=s+i;
if(s==m)
{printf("%d Its factors are",m);
for(i=1;i<=m;i++)
if(m%i==0) printf(" %d",i);
printf("\n");
}
}
}
getchar();
}
你的程序的问题 有个括号掉了 另外你的是TC的话要加getchar();否则结果一闪即逝!

main()
{ int m,s,i;
for(m=2;m<=1000;m++)
{ s=0;
for(i=1;i<m;i++)
if(m%i==0) s=s+i;
if(s==m)
{