当前位置: 代码迷 >> C语言 >> 看不懂这个程序,大哥们给解释下!
  详细解决方案

看不懂这个程序,大哥们给解释下!

热度:111   发布时间:2007-10-17 18:46:55.0
看不懂这个程序,大哥们给解释下!

#include<stdio.h>
int main()
{
int i,t,j,num,data[100];
for(num=1;num<=1000;num++)
{
j=0;
i=1;
t=num;
while(i<num)
{
if(num%i==0)
{
t=t-i;
data[j]=i;
j++;
}
i++;
}
if(t==0)
{
printf("%d its factors are ",num);
for(i=0;i<j;i++)
{
printf("%d",data[i]);
if(i!=j-1)
{
printf(",");
}
}
printf("\n");
}
}
getch();
}

搜索更多相关的解决方案: int  解释  num  main  

----------------解决方案--------------------------------------------------------
这应该是一个求完数程序,所谓完数,就是一个数正好等于它的所有因子之和.如6=1+2+3;所以6是完数.

#include<stdio.h> //头文件
int main()
{
int i,t,j,num,data[100];
for(num=1;num<=1000;num++)
{
j=0;
i=1;
t=num;
while(i<num) //求出num的因子并将其分别赋给data中;t不断减去因子,如t为零.说明是完数
{
if(num%i==0)
{
t=t-i;
data[j]=i;
j++;
}
i++;
}
if(t==0) //如t为零则是完数
{
printf("%d its factors are ",num);
for(i=0;i<j;i++)
{
printf("%d",data[i]); //将所有因子输出
if(i!=j-1)
{
printf(",");
}
}
printf("\n");
}
}
getch();
}
----------------解决方案--------------------------------------------------------
一语惊人!是我糊涂了,if语句内部t值改变了,而我以为是while语句内改变的。怎么想怎么不明白,如果t值变了,那怎么继续求它别的因子呢?!!!现在明白了  呵呵 谢了!!
----------------解决方案--------------------------------------------------------
if语句内部t值是不是会被减到负数啊?但是并不影响判断。
----------------解决方案--------------------------------------------------------
t是局部动态变量 每次遍历的时候总是等于 num
而 num>i的 t-=i 始终大于 0吧 !不会到负数。
----------------解决方案--------------------------------------------------------

恩,是的。但要求的是完数,t最后等于0才符合要求


----------------解决方案--------------------------------------------------------
不是吧!if内的t好象能减到负数也!如t=12时,他的因子有1,2,3,4,6 那么12-1-2-3-4-6&lt;0了呢!!
----------------解决方案--------------------------------------------------------
哈哈!!!会减到负数的.你把t==0改为t<0再编译一下就知道有哪些数会被减到负了,
----------------解决方案--------------------------------------------------------
  相关解决方案