为什么第一个测试点一直RE啊,大佬求救

#include<stdio.h>
int main(){
int N,i,zong[1001],j,p,g;
int max=0;
struct Student{
char name[20];
int yu;
int shu;
int ying;
}student[1001];
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%s %d %d %d",student[i].name,&student[i].yu,&student[i].shu,&student[i].ying);
zong[i]=student[i].yu+student[i].shu+student[i].ying;
}
for(j=1;j<=N;j++){
if(zong[j]>max){
max=zong[j];
g=j;}
}
printf("%s %d %d %d",student[g].name,student[g].yu,student[g].shu,student[g].ying);
return 0;
}

img

修改如下,供参考:

#include<stdio.h>
int main() {
    int N, i, zong[1001], j, p, g;
    int max = 0;
    struct Student {
        char name[20];
        int  yu;
        int  shu;
        int  ying;
    }student[1001];
    scanf("%d", &N);
    for (i = 0; i < N; i++) {   //for (i = 1; i <= N; i++) 修改
        scanf("%s %d %d %d", student[i].name, &student[i].yu, &student[i].shu, &student[i].ying);
        zong[i] = student[i].yu + student[i].shu + student[i].ying;
    }
    max = zong[0]; g = 0;     //修改
    for (j = 0; j < N; j++) { //for (j = 1; j <= N; j++)  修改
        if (zong[j] > max) {
            max = zong[j];
            g = j;
        }
    }
    printf("%s %d %d %d", student[g].name, student[g].yu, student[g].shu, student[g].ying);
    return 0;
}

g应该默认为0
否则如果输入学生成绩全是0的话,代码有问题

这题哪里用得到结构体和数组

#include<stdio.h>
int main(){
    int N,max=-1;    
    char name[20],name1[20];
    int yu,shu,wai,yu1,shu1,wai1;

    scanf("%d",&N);
    while(N--){
        scanf("%s %d %d %d",name,&yu,&shu,&ying);
        if(yu+shu+wai>max)
        {
            max=yu+shu+wai;

            strcpy(name1,name);
            yu1=yu;
            shu1=shu;
            wai1=wai;
        }
    }
    printf("%s %d %d %d",name1,yu1,shu1,wai1);
    return 0;
}