读入 n(>)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名
和学号
均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
1 #include <iostream> 2 using namespace std; 3 4 int main(){ 5 int n; 6 cin>>n; //输入学生的个数 7 8 typedef struct student{ //定义学生的结构体 9 char name[11]; //这里要用typedef因为如果不用的话stdu会被当做一个拥有这种结构体的变量 10 char ID[11]; //如果用了typedef那么 stdu就会被当作一种数据类型 11 int grade; 12 }stdu; 13 14 stdu a[n]; //存放这些数据的数组 15 for(int i=0;i<n;i++){ //输入数据 16 cin>>a[i].name; 17 cin.get(); 18 cin>>a[i].ID; 19 cin.get(); 20 cin>>a[i].grade; 21 } 22 23 stdu temp1; 24 temp1=a[0]; 25 for(int j=0;j<n;j++){ //排序算法找出成绩最高的哪个人 26 if(temp1.grade<a[j].grade){ 27 temp1=a[j]; 28 } 29 } 30 31 stdu temp2; 32 temp2=a[0]; 33 for(int k=0;k<n;k++){ //找成绩最低的哪个 34 if(temp2.grade>a[k].grade){ 35 temp2=a[k]; 36 } 37 } 38 39 cout<<temp1.name<<' '<<temp1.ID<<endl; 40 cout<<temp2.name<<' '<<temp2.ID<<endl; 41 42 return 0; 43 }