#include <stdio.h>
int fun(int n,int a[],int *k)
{int m=0,i,t;
t=n;
/**********found**********/
for(i=0;i<n;i++)//fun()函数的for循环中,这里的循环的就是输入数字n的因式,0不可能是其他整数的因式,也没有意义。所以这里应该将“i = 0”改为”i = 1”。
if(n%i==0)
{a[m]=i;m++;t=t-i;}
/**********found**********/
k=m;//fun()函数中的参数是*k,也就是说k只是一个指针变量,而不是我们所需要的因子个数的变量,所以这里我们应该使用的是*k
/**********found**********/
if(t=0) return 1;//在if条件语句中,等于号应该是“==”,而不是普通的“=”
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);
}
fun函数主要功能是:是判断整数n 是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数”。
于 2022-08-18 10:24:34 首次发布