C语言数组题型升序排序

输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),然后升序排序,最后将其中的完数输出

解题代码如下,经验证满足题目要求:

#include<stdio.h>
#include<stdlib.h>

void sort(int a[],int len)
{
    for(int j=0;j<len-1;j++)
    {
        for(int i=j+1;i<len;i++)
        {
            if (a[j]>a[i])
            {
                int temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
}

int main()
{
    int i,n;
    int a[500] = {0};
    for(i = 0;i<500;i++){
        scanf("%d",&a[i]);
        if(a[i] == 0){
            n = i;
            break;
        }
    }
    sort(a,n);
    for(i=0;i<n;i++)//输出排序后的数组
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}


#include<stdio.h>
bool wanshu(int n)
{
    int s = 0;
    int i;
    for(i = 1; i < n; i++)
    {
        if(n%i == 0) 
            s += i;
    }
    if(s == n) return true;
    return false;
}

void fsort(int a[], int len)
{
    for(int j=0; j<len-1; j++)
    {
        for(int i = j + 1; i < len; i++)
        {
            if (a[j] > a[i])
            {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
}


int main()
{
    int i, n;
    int a[500] = {};
    for(i = 0; i < 500; i++)
    {
        scanf("%d", &a[i]);
        if(a[i] == 0){
            n = i;
            break;
        }
    }
    fsort(a, n);
    for(i = 0;i < n; i++)//输出排序后的数组
    {
        if(wanshu(a[i]))
            printf("%d\t", a[i]);
    }
    printf("\n");
    return 0;
}