输入不多于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;
}