BC120 争夺前五名
题目描述
-
争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。
数据范围: 5≤n≤50 ,成绩采取百分制并不会出现负数
输入描述:
两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。
输出描述:
一行,输出成绩最高的前五个,用空格分隔。
#include<stdio.h> int main() { int arr[40] = { 0 }; int num = 0; scanf("%d", &num);//输入几名 for (int k = 0; k <= num; k++) {//输入成绩 scanf("%d", &arr[k]); } int temp = 0; for (int i = 0; i < num; i++) {//第i位为最大数 for (int j = i + 1; j < num; j++) { //从第i+1位开始遍历剩余数 if (arr[j] > arr[i]) {//存在大于最大数的数 temp = arr[i];//把最大数和比较数进行交换 arr[i] = arr[j]; arr[j] = temp; } } } for (int k = 0; k < 5; k++) printf("%d ", arr[k]); return 0; }
讲解: 1,求前五名的排列顺序,我们需要依次对数据进行比较,这时候我们引用一维数组 int nums[100]; 2,需要对学生个数进行输入 int n; scanf("%d",&n); 3,需要定义一维数组,数组中个数不能为未知数,本题中,n的范围为5到50,最大的情况就是50个人,我们定义数组,int nums[50]; 4,数组中数据的输入我们需要利用循环 5,进行数的对调的时候,我们需要引用第三个元素,才能达到数据交换的目的, int temp=a; a=b; b=temp;