读书人

中邪了!数组重复输出结果不同?解决方

发布时间: 2012-02-06 15:52:44 作者: rapoo

中邪了!!!数组重复输出结果不同???
同一个数组,前后两次输出的结果竟然不同!!!是不是我的VC软件有问题????
#include<stdio.h>

//功能:判断是否为完全数,若是返回因子个数及所有因子;反之返回False.
//n:待判断数;q:因子数;a[]:存放因子数组。
int isperfect(int n,int *q,int a[])
{int i,sum=1,k;

for(i=2;i<=n/2;i++)
if(!(n%i)) sum=sum+i;
if(sum!=n) //非完全数
return 0;
else //是完全数
{for(i=1,k=0;i<=n/2;i++)
{if(!(n%i))
{a[k++]=i; //=========Tested!
// k++;
printf("%d\n",a[k-1]);}
}
*q=k;
for(i=0;i<*q;i++)
printf("%d\n",a[i]);// return 1;
}
}

//-------主函数-----------------
void main()
{
int i,j,m,q,a[]={0};
printf("1000内的完全数:\n");
i=isperfect(28,&q,a);
//printf("%d\n",a[1]);
}

============================
运行结果竟然是:
1 2 4 7 14
1 5 4 7 14

究竟是什么原因??好心人帮我运行一下!!!

[解决办法]
我运行了一下,把a[]={0};改大一点就可以了,譬如a[50](根据需要确定,50是我随便定的!)就可以了!得出的答案就不会不同了!
另外,你的代码中还存在这样几个小问题!---编译的时候你自己应该知道的!

读书人网 >C语言

热点推荐