读入?n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 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
结尾无空行
#include<stdio.h> //结构体Stu存储学生信息 typedef struct Stu{ ? ? char name[11]; ? ? char id[11]; ? ? int grade; }Stu; int main() { ? ? ?? ? ? Stu student[1000];//学生信息的数组,100的话内容过小,测试部分无法通过 ? ? int n=0,max=0,min=0;//n为学生个数,max为成绩最大的学生编号,min为成绩最小的学生编号,赋初值为第一个学生 ? ? scanf("%d",&n); ? ? //循环录入学生信息 ? ? for(int i=0;i<n;i++) ? ? { ? ? ? ? scanf("%s %s %d",student[i].name,student[i].id,&student[i].grade); ? ? ? ? //查看输入 ? ? ? ? /* ? ? ? ? puts(student[i].name); ? ? ? ? puts(student[i].id); ? ? ? ? printf("%d\n",student[i].grade); ? ? ? ? */ ? ? ? ? //当不为第一个学生是与max和min的成绩进行比较,更新数据 ? ? ? ? if(i!=0)? ? ? ? ? { ? ? ? ? ? ? if(student[i].grade>student[max].grade)? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? max=i; ? ? ? ? ? ? } ? ? ? ? ? ? if(student[i].grade<student[min].grade)? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? min=i; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? //输出 ? ? printf("%s %s\n%s %s",student[max].name,student[max].id,student[min].name,student[min].id); }
|