c求助,样例过了但只能通过第一个点

P5740 【深基7.例9】最厉害的学生

JJQ419875574 @ 2022-01-04 23:44:55


int main(){
    typedef struct{
        char name[20];
        int chi;
        int math;
        int egl;
        int sum;
    }students;
    students stu[1010];
    int n;
    scanf("%d",&n);

    for(int i=1;i<=n;i++){
        scanf("%s %d %d %d",stu[i].name,&stu[i].chi,&stu[i].math,&stu[i].egl);
        stu[i].sum=stu[i].chi+stu[i].math+stu[i].egl;
    }

    //compare
    int maxn=stu[1].sum;
    int max=1;
    for(int j=1;j<=n;j++){
        if(stu[j].sum>maxn){
            max=j;
        }
    }
    printf("%s %d %d %d",stu[max].name,stu[max].chi,stu[max].math,stu[max].egl);
}

by ud2_ @ 2022-01-04 23:54:39

maxn 一直是 stu[1].sum


by wanan2203ouchengli @ 2023-07-26 14:43:22

1.数组的话下标应该是从0开始的

2.这一步

if(stu[j].sum>maxn)

{ max=j; }

再找到大于maxn的数之后,你只是记录了他的下标,没有更新maxn的值,对后面的比较没有意义


|