题目描述
浙江理工大学120年华诞,很多有成就的校友为学校捐款,希望学校能培养出更优秀的学生。学校把这些捐款登记在册,现在需要你帮忙处理这几件事,1 算出总捐款数 2 单人捐款最大金额 3 把捐款按从高到低排个序
输入
多组测试数据,每组先输入一个整数n表示捐款的人数(假设n不大于120),然后是n个人的捐款额(均为整数)
输出
对于每组测试数据输出一行,每行n+2个数据,用空格隔开,第一个数为总捐款数 第2个为单人捐款最大金额,后n个是排好序的捐款金额
样例输入
3 1 2 3 4 1 2 3 4
样例输出
6 3 3 2 1 10 4 4 3 2 1
#include<stdio.h>
#include<math.h>
int main(){
int a[119],b[119];
int n,x=0,y;
int i=0,j,r,t,k=0;
int sum=0;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++){
scanf("%d",&y);
a[x]=y;
x++;
}
for(j=0;j<n;j++){
for(i=0;i<n;i++){
for(r=0;r<n;r++){
if(a[j]>=a[r]){
k++;
if(k=n){
break;
}
}
}
if(a[j]<a[i]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
if((j==n-1)&&(i==n-1)){
t=a[n-1];
}
}
if(k==n){
t=a[j];
}
a[j]=-1;
b[j]=t;
}
for(i=0;i<n;i++){
sum=sum+b[i];
}
printf("%d ",sum);
printf("%d ",b[0]);
for(i=0;i<n;i++){
printf("%d ",b[i]);
}
printf("\n");
x=0;
i=0;
sum=0;
k=0;
}
return 0;
}