题目描述
把m个班级的学生成绩由高到底进行排序。输入
第1行是一个整数m(0<m<100),表示需要排序的班级数。后面有m组数,每组数分两行:第一行是一个整数n(0<n<50),表示一个班级有n个人;第二行是n个整数,表示该班级每个人的成绩。
输出
m行,每行n个数,表示每个班级由大到小排序后的成绩,每两个数之间空一格,最后一个数后没有空格。样例输入
2 15 78 90 76 84 95 82 90 95 90 82 92 86 85 76 77 40 86 78 75 97 80 83 95 78 97 80 88 80 98 87 87 83 85 88 87 90 83 88 95 85 90 95 91 83 93 91 90 82 84 98 92 95 88 94 83 80
样例输出
95 95 92 90 90 90 86 85 84 82 82 78 77 76 76 98 98 97 97 95 95 95 95 94 93 92 91 91 90 90 90 88 88 88 88 87 87 87 86 85 85 84 83 83 83 83 83 82 80 80 80 80 78 78 75
#include<stdio.h> int *rank(int n,int a[]) { for(int i=0;i<n;i++) { for(int j=0;j<n-i;j++) { if(a[j]<a[j+1]) { int tem; tem=a[j]; a[j]=a[j+1]; a[j+1]=tem; } } } return a; } int main(){ int n; //几个班级 scanf("%d",&n); for(int i=0;i<n;i++) { int a[110]={0};//存储班级的数组 int b[55]={0};//存储没个班级学生成绩的数组 scanf("%d",&a[i]); for(int j=0;j<a[i];j++) { scanf("%d",&b[j]); } int *c=rank(a[i],b); // 输出时,每两个数之间有空格最后一个数之后没有空格 printf("%d",c[0]); for(int k=1;k<a[i];k++) { printf(" "); printf("%d",c[k]); } } return 0; }
solution:
1 返回一个数组的函数,返回值不能直接返回一个数组,只能将数组中的数返回到主函数中的一个指针型变量中去
2 输出值的要求:每两个数之间有空格最后一个数之后没有空格
标签:function,班级,88,83,82,90,80,排序,95 From: https://www.cnblogs.com/luoxiaoluo/p/16972224.html