这段代码有一些问题。首先,字符串数组name和sno的大小应该大于10,以确保能够容纳输入的字符串。其次,指针name_max、name_min、sno_max和sno_min应该初始化为NULL,而不是指向name和sno的指针。最后,在printf语句中应该去掉*,因为name_max、sno_max、name_min和sno_min已经是指针。

下面是修正后的代码:

#include<stdio.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    char name[100];
    char sno[100];
    int grade;
    char *name_max = NULL;
    char *name_min = NULL;
    char *sno_max = NULL;
    char *sno_min = NULL;
    int max=0;
    int min=0;
    for(;n>0;n--)
    {
        scanf("%s %s %d",name,sno,&grade);
        if(max==0)
        max=grade;
        if(min==0)
        min=grade;

        if(grade>max)
        {
            max=grade;
            sno_max=sno;
            name_max=name;
        }
        if(grade<min)
        {
            min=grade;
            sno_min=sno;
            name_min=name;
        }

    }

    printf("%s %s\n",name_max,sno_max);
    printf("%s %s",name_min,sno_min);

    return 0;
}

这样修改后,代码将能够正确运行并输出最高分和最低分的姓名和学号

#includestdiohint main int n=0; scanfd&n; char name10; char sno10; int grade; char name_max; char name_min; char sno_max; char sno_min; int max=0; int min=0; for;n0

原文地址: https://www.cveoy.top/t/topic/ijbC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录