东北大学在线编程社区problem1514
题目描述:
定义学生结构体,初始化3名学生的学号和每个学生考试三门功课(数学,语文,英语)的成绩。struct stu s[3]={{"No.0201",85,78,82},{"No.0202",84,80,86},{"No.0203",84,60,75}};
编写程序根据用户输入的n值,输出第n门课的最高分及对应学号,输入1,输出数学最高分及对应学号,输入2,输出语文最高分及对应学号,输入3,输出英语最高分及对应学号。
输入样例:1
输出样例:
85
No.0201
//作者使用Microsoft Visual Stdio 2019编写代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct stu {
char num[10];
int math;
int ch;
int en;
};
int main(void)
{
struct stu s[3] = { {"No.0201",85,78,82},{"No.0202",84,80,86},{"No.0203",84,60,75} };
struct stu temp;
int n;
scanf("%d", &n);
int i, j;
switch (n)
{
case 1:
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
if (s[i].math < s[j].math) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
printf("%d\n%s", s[0].math, s[0].num);
break;
case 2:
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
if (s[i].ch < s[j].ch) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
printf("%d\n%s", s[0].ch, s[0].num);
break;
case 3:
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
if (s[i].en < s[j].en) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
printf("%d\n%s", s[0].en, s[0].num);
break;
}
return 0;
}