用指针和结构体输出分数最高学生的信息

img

代码如下:

#include <stdio.h>
#include <stdlib.h>

struct student
{
    char* num;
    int score;
};

struct student max(struct student a[],int n)
{
    int i,maxindex;
    maxindex = 0;
    for(i=1;i<n;i++)
    {
        if(a[i].score > a[maxindex].score)
            maxindex = i;
    }
    return a[maxindex];
}

int main()
{
    struct student a[20]; //数组大小可自己调整
    struct student mm;//最大分数信息
    int i,n;
    printf("请输入学生人数:");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        printf("请输入学生%d的学号和分数:",i+1);
        a[i].num = (char*)malloc(40);
        scanf("%s %d",a[i].num,&a[i].score);
    }
    mm = max(a,n);
    printf("最大分数学生学号:%s,分数:%d",mm.num,mm.score);
    //释放空间
    for (i=0;i<n;i++)
    {
        free(a[i].num);
        a[i].num =0;
    }
    return 0;
}