现有 N(N\le 1000)N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的仅有英文小写字母的字符串)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位
#include<stdio.h>
struct student{
char name[99];
int x;
int y;
int z;
int sum;
}a[99];
void add(struct student *a,int n){
int temp;
for(int i=0;i<n;i++){
a[i].sum=a[i].x+a[i].y+a[i].z;
for(int j=1;j<=n;j++){
if(a[j].sum>a[i].sum)
temp=a[i].sum;
a[i].sum=a[j].sum;
a[j].sum=temp;
}
}
}
int main(){
void add(struct student *a,int n);
int i,n;
int sum;
struct student a[99];
for(i=0;i<n;i++){
scanf("%s",a[i].name);
scanf("%d",&a[i].x);
scanf("%d",&a[i].y);
scanf("%d",&a[i].z);
}
add(a,n);
printf("%d",a[i].sum);
return 0;
}
你把最高分数在输入的时候计算一下。然后给个i地址不就好了。
#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>
#include<stdio.h>
struct student {
char name[99];
int x;
int y;
int z;
int sum;
}a[99];
int main() {
int i, n=100;
int sum;
struct student a[99];
int max = 0;
int max_i;
for (i = 0; i < n; i++) {
sum = 0;
scanf("%s", a[i].name);
scanf("%d", &a[i].x);
scanf("%d", &a[i].y);
scanf("%d", &a[i].z);
sum = a[i].x + a[i].y + a[i].z;
if (sum > max) {
max = sum;
max_i = i;
}
}
printf("%d", a[max_i].sum);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!