运行不了 然后我的输出也不太对 写不动了 想知道怎么改

现有 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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632