描述
期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。
数据范围:5≤ n≤50 ,成绩采取百分制并不会出现负数
输入描述:
两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。
输出描述:
一行,输出成绩最高的前五个,用空格分隔。
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int score[n];
int i;
int mark = 0;
//数组赋值
for(i = 0;i < n;i++)
{
scanf("%d",&mark);
score[i] = mark;
}
//升序排布
for(i = 1;i < n;i++)
{
int temp = 0; //中转变量
int j;
for(j = 0;j < i;j++) //score[1]比较score[0],向前比较 i 次
{
if(score[i] >= score[j]) //利用中转变量,当后者大于前者交换
{
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
}
//打印前五
for(i = 0;i < 5;i++)
{
printf("%d ",score[i]);
}
return 0;
}
感觉这个代码真的好丑,但是很多题解都是这样的模块和方法,希望有大佬能够优化一下!

京公网安备 11010502036488号