大家好,我是小卡皮巴拉
文章目录
目录
每篇前言
博客主页:小卡皮巴拉
咱的口号:🌹小比特,大梦想🌹
作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。
牛客题目: BC120 争夺前五名
原题链接:BC120 争夺前五名
题目描述
期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。
数据范围: 5≤n≤50 5≤n≤50 ,成绩采取百分制并不会出现负数
输入描述:
两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。
输出描述:
一行,输出成绩最高的前五个,用空格分隔。
示例1
输入:
6 99 45 78 67 72 88输出:
99 88 78 72 67示例2
输入:
5 10 20 30 40 50输出:
50 40 30 20 10
解题思路:
通过阅读题目,我们发现本题目求解需要3步:
1.输入数字n表示要输入n个成绩,并在第二行输入n个成绩。
2.将成绩按照降序排序
3.打印输出前5个成绩
具体思路:
- 输入学生个数n
- 输入n个学生的成绩
- 写一个函数用于实现冒泡排序
- 写一个函数用于打印输出前5名学生的成绩
题目要点:
本题的要点在于实现冒泡排序,冒泡排序的实现有以下要点:
arr[]
是要排序的数组。n
是数组的大小。- 外层循环控制排序的轮数,总共需要
n-1
轮。- 内层循环在每轮中进行相邻元素的比较和交换,总共需要
n-i-1
次比较,因为每轮排序后,最大的元素会“冒泡”到数组的末尾。
完整代码:
//冒泡排序 void BubbleSort(int* arr,int n) { int i,j,tmp; for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(arr[j]<arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } } //打印函数 void PrintArray(int* arr,int size) { for(int i=0;i<size;i++) { printf("%d ",arr[i]); } } int main() { //输入n个学生 int n = 0; scanf("%d",&n); //输入n个学生成绩 int arr[n]; for(int i=0;i<n;i++) { scanf("%d",&arr[i]); } //排序 BubbleSort(arr,n); //打印 PrintArray(arr,5); return 0; }
兄弟们共勉 !!!
码字不易,求个三连
抱拳了兄弟们!