C语言,找不到逻辑错误后,晓不得在哪里找错了

找不到错误
#include
struct student
{
    char name[10];
    char num[20];
    int score;
}student[50],max,min;
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=0;iscanf("%s%s%d",student[i].name,student[i].num,&student[i].score);
    }
    max=student[0];
   for(i=1;iif(student[i].score>max.score)
       {
           min=max;
           max=student[i];
           continue;
       }
   }
    printf("%s %s\n",max.name,max.num);
    printf("%s %s\n",min.name,min.num);
    return 0;
}

错误结果:

img


题目:

img

min和max你记录序号就可以了

#include <stdio.h>
#include <stdlib.h>
struct student
{
    char name[10];
    char num[20];
    int score;
}student[50];
int max,min;
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s%s%d",student[i].name,student[i].num,&student[i].score);
    }
    min = max = 0;
   for(i=1;i<n;i++)
   {
       if(student[i].score<student[min].score)
       {
           min = i;
       }
       if(student[i].score>student[max].score)
       {
           max = i;
       }
   }
    printf("%s %s\n",student[max].name,student[max].num);
    printf("%s %s\n",student[min].name,student[min].num);
    return 0;
}

min你没有进行比较,min需要单独进行比较得出。
修改后的测试结果:

img

代码修改如下:


#include<stdio.h>
struct student
{
    char name[20];//这里空间大一些
    char num[20];
    int score;
}student[50], max, min;
int main()
{
    int n, i;
    scanf("%d", &n);
    
    for (i = 0; i < n; i++)
    {
        scanf("%s%s%d", student[i].name, student[i].num, &student[i].score);
    }
    max = student[0];
    min = student[0];  //修改
    for (i = 1; i < n; i++)
    {
        if (student[i].score > max.score)
            max = student[i];
        if (student[i].score < min.score)
            min = student[i];
    }
    printf("%s %s\n", max.name, max.num);
    printf("%s %s\n", min.name, min.num);
    return 0;
}

min需要另外比较吧。你的代码min看起来只是次于max的第二名,输入两组数据才会对。

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