题目描述:
从键盘输入若干个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,计算每个学生的总分,输出总分最高的学生的信息。
输入:
首先输入一个整数n(1<=n<=100),表示学生人数,然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及三个整数,表示语文、数学、英语三门课成绩,数据之间用空格隔开。
输出:
输出总成绩最高的学生的学号、姓名、及三门课成绩,用空格隔开。若有多个最高分,只输出第一个。
样例输入:
3 541207010188 Zhangling 89 78 95 541207010189 Wangli 85 87 99 541207010190 Fangfang 85 68 76
样例输出:
541207010189 Wangli 85 87 99
代码如下:
#include<stdio.h>
// 定义学生信息结构体
typedef struct
{
long long id; // 用长长整形,防止数据溢出
char name[20];
int x[3];
}student;
int main()
{
int n, sum[100] = { 0 };
scanf("%d", &n);
student stu[100]; // 利用结构别名定义一个结构数组
// 输入每个学生信息
for (int j = 0; j < n; j++)
{
scanf("%lld", &stu[j].id);
scanf("%s", &stu[j].name);
for (int i = 0; i <= 2; i++)
{
scanf("%d", &stu[j].x[i]);
sum[j] += stu[j].x[i];
}
}
// 找出总成绩最高的
int max = sum[0];
int y=0;
for (int i = 0; i < n; i++)
if (sum[i] > max)
{
max = sum[i];
y = i;
}
// 输出
printf("%lld %s ", stu[y].id, stu[y].name);
for (int i = 0; i <= 2; i++)
printf("%d ", stu[y].x[i]);
return 0;
}