关于#c语言#的问题:最后将其中“水仙花数”输出到当前文件夹中的“outtxt文件

输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入)。
然后降序排序,最后将其中“水仙花数”输出到当前文件夹中的“outtxt文件。
提示:一个三位数,其各位数字立方和等于该数本身即为“水仙花数”。
例如:153=13+53+33。
示例:输入:
120 153 350 650 370 407 578

输出:(存入文件outtxt中的内容)
407 370 153


#include<stdio.h>
int main()
{
    FILE *fp;
    fp = fopen("out.txt", "w+");
    printf("输出水仙花数:\n");
    int i, a, b, c;
    for (i = 100; i <= 999; i++) //整数的取值范围
    {
        int a = i % 10;//个位数 
        int b = (i / 10) % 10;//十位数 
        int c = i / 100;//百位数 

        if (i == a * a * a + b * b * b + c * c * c){ //各位上的立方和是否与原数n相等
            printf("%d\t", i);
            fprintf(fp, "%d ", i);
            }
    }
    int fclose ( FILE * stream );

    return 0;
}


```c

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int getsum(int n)
{
    int sum = 0, ret = 0;
    while (n)
    {
        ret = n % 10;
        sum += (int)pow(ret, 3);
        n /= 10;
    }
    return sum;
}
int main()
{
    int n;
    FILE*fp;
    fp = fopen("ouut.txt", "w+");
    scanf("%d", &n);
    int*a = (int*)malloc(sizeof(int)*n);
    for (int i = 0; i < n; i++)
    {

        scanf("%d", &a[i]);

        if (a[i] == getsum(a[i]))
        {
            fprintf(fp, "%d ", a[i]);
        }
    }
    fclose(fp);
    fp = NULL;
    return 0;
}


```求采纳