读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
1. 第 1 行:正整数 n 2. 第 2 行:第 1 个学生的姓名 学号 成绩 3. 第 3 行:第 2 个学生的姓名 学号 成绩 4. ... ... ... 5. 第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
1. 3 2. Joe Math990112 89 3. Mike CS991301 100 4. Mary EE990830 95
输出样例:
1. Mike CS991301 2. Joe Math990112
这是一道典型的结构体题目:
代码如下:
C语言:
#include<stdio.h> struct student { char name[20]; char id[20]; int score; }; int main() { int n; scanf("%d",&n); struct student stu[n]; int i,max,min; for(i=0;i<n;i++) scanf("%s %s %d",stu[i].id,stu[i].name,&stu[i].score); max=stu[0].score; min=stu[0].score; for(i=0;i<n;i++) { if(max<stu[i].score){ max=stu[i].score; } if(min>stu[i].score){ min=stu[i].score; } } for(i=0;i<n;i++) { if(stu[i].score==max){ printf("%s %s\n",stu[i].id,stu[i].name); } } for(i=0;i<n;i++) { if(stu[i].score==min){ printf("%s %s",stu[i].id,stu[i].name); } } return 0; }
C++:
#include <iostream> using namespace std; struct student { char name[20]; char id[20]; int score; }; int main() { int n; cin >> n; struct student stu[n]; int i, max, min; for (i = 0; i < n; i++) cin >> stu[i].id >> stu[i].name >> stu[i].score; max = stu[0].score; min = stu[0].score; for (i = 0; i < n; i++) { if (max < stu[i].score) { max = stu[i].score; } if (min > stu[i].score) { min = stu[i].score; } } for (i = 0; i < n; i++) { if (stu[i].score == max) { cout << stu[i].id << " " << stu[i].name << endl; } } for (i = 0; i < n; i++) { if (stu[i].score == min) { cout << stu[i].id << " " << stu[i].name; } } return 0; }
OK成功解题!