1004 成绩排名 我发现不了问题

第二个测试点过了,就是第一个和第二个过不了,自学C,看了很久也发现不了问题,请各位帮帮忙

img

img

修改了下,试试:

#include<stdio.h>
#define N 50

struct student{
       char name[11];
       char id[11];
       int  grade;
};

int main()
{
    int n,i,max,min,max_i,min_i;
    struct student stu[N];
    if(scanf("%d",&n)==1)
    {
        for(i=0;i<n;i++)
        {
            if(scanf("%s%s%d",stu[i].name,stu[i].id,&stu[i].grade))
            {
               if(i==0)
               {
                   max = min = stu[i].grade;
                   max_i = min_i = i;
               }else{
                   if(max < stu[i].grade)
                   {
                       max = stu[i].grade;
                       max_i = i;
                   }
                   if(min > stu[i].grade)
                   {
                       min = stu[i].grade;
                       min_i = i;
                   }
               }
            }
        }
        printf("%s %s\n",stu[max_i].name,stu[max_i].id);
        printf("%s %s\n",stu[min_i].name,stu[min_i].id);
    }else{
        printf("Failed to read integer.\n");
    }
    
    return 0;
}

第一二个输入不要带地址符&,输出也不要

16行:
scanf("%s %s %d", &stu[i].name, &stu[i].id, &stu[i].grade);
应改为:
scanf("%s %s %d", stu[i].name, stu[i].id, &stu[i].grade);


第35行:
printf("%s %s\n", &stu[i].name, &stu[i].id);
应改为:
printf("%s %s\n", stu[i].name, stu[i].id);

第39行:
printf("%s %s\n", &stu[i].name, &stu[i].id);
应改为:
printf("%s %s\n", stu[i].name, stu[i].id);

就成这样了 ::>_<::

img

就成这样了 ::>_<::

img

img