注意:
一定要注意,第一次提交有一组数据测试 WA,下载数据查后,发现分数相同的,只记录第一组数据,所以一定要加下面这个判断
if(max == sum[i]){ // 如果有成绩相同的,记录第一个学生
continue;
}
AC代码:
#include<cstdio>
using namespace std;
struct STU{
char name[10]; //名字
int yu; //语文
int sh; //数学
int yi; //英语
};
int main(){
int n;
scanf("%d", &n);
struct STU arr[n]; //结构体数组
int sum[n];
for(int i=0; i<n; i++){ // sum 数组和 arr 数组下标保持一致,sum[i] 记录第 i 个学生的成绩
scanf("%s%d%d%d", arr[i].name, &arr[i].yu, &arr[i].sh, &arr[i].yi);
sum[i] = arr[i].yu + arr[i].sh + arr[i].yi; //读入成绩同时,计算该同学的分数和
}
int temp=0, max=sum[0]; // temp 记成绩最大学生的下标,初值为 0,max 初值赋为sum[0]
for(int i=0; i<n; i++){
if(max == sum[i]){ // 如果有成绩相同的,记录第一个学生
continue;
}
if(max<sum[i]){
max = sum[i];
temp = i;
}
}
printf("%s %d %d %d", arr[temp].name, arr[temp].yu, arr[temp].sh, arr[temp].yi);
return 0;
}