函数fun()的功能是:判断整数n是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数"。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完数。如果是完数,函数返回值为1,否则函数返回值为0。
数组a中存放的是找到的因子,变量k中存放的是因子的个数。请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <stdlib.h>
int fun(int n, int a[], int *k)
{
int m=0, i, t;
t=n;
for(i=1; i<n; i++)
{
if(n%i==0)
{
a[m]=i;
m++;
t=t-i;
}
}
/**********found**********/
k=m;
/**********found**********/
if(t=0)
{
return 1;
}
else
{
return 0;
}
}
main()
{
int n, a[10], flag, i, k;
printf("请输入一个整数:");
scanf("%d",&n);
flag=fun(n,a,&k);
if(flag)
{
printf("%d是完数,其因子是:",n);
for(i=0;i<k;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
}
else
{
printf("%d不是完数\n",n);
}
system("pause");
}