function~排序多个班级的成绩
题目描述
把m个班级的学生成绩由高到底进行排序。
输入
第1行是一个整数m(0<m<100),表示需要排序的班级数。
后面有m组数,每组数分两行:第一行是一个整数n(0<n<50),表示一个班级有n个人;第二行是n个整数,表示该班级每个人的成绩。
后面有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 输出值的要求:每两个数之间有空格最后一个数之后没有空格
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程