填空题

函数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");

}

赣ICP备20007335号-2