程序1某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组和指针作函数参数,编程实现如下菜单驱动的学生成绩管理系统:

程序1某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组和指针作函数参数,编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号和考试成绩;
(2)按学号由小到大排出成绩表;
(3)计算并输出最高分及相应学生的学号。
要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Append record
2.Sort in ascending order by number
3.Caculate Max. score of course and number
0.Exit
Please enter your choice:
然后,根据用户输入的选项执行相应的操作。

手打不容易,满意给个采纳吧

img


#include <stdio.h>
//typedef
struct student
{
    int id;
    int score;

} t[30];
int post=0,n,max;
void r()
{
    int k;
    printf("输入学生个数:");
    scanf("%d",&n);
    printf("输入学号和分数:\n");
    for(k=0; k<n; k++)
    {
        scanf("%d%d",&t[k].id,&t[k].score);
    }
    z();
    return;
}
void sort()
{
    int j,k;
    struct student tem;
    for(k=0; k<n-1; k++)
    {
        for(j=0; j<n-k-1; j++)
        {
            if(t[j].id>t[j+1].id)
            {
                tem=t[j];
                t[j]=t[j+1];
                t[j+1]=tem;
            }
        }
    }
    for(k=0; k<n; k++)
    {
        printf("学号:%d  成绩:%d\n",t[k].id,t[k].score);
    }
    z();
    return;
}

void m()
{
    int j,k;
    max=t[0].score;
    for(k=1; k<n; k++)
    {
        if(t[k].score>max)
        {
            max=t[k].score;
            post=k;
        }
    }
    printf("最高分数:%d   学号为:%d",max,t[k].id);
    z();
    return;
}

int z()
{
    printf("1.Append record\n");
    printf("2.Sort in ascending order by number\n");
    printf("3.Caculate Max. score of course and number\n");
    printf("0.Exit\n");
    printf("Please enter your choice:\n");
    int c=0;
    scanf("%d",&c);
    switch (c)
    {
    case 1:
        r();
        break;
    case 2:
        sort();
        break;
    case 3:
        m();
        break;
    case 0:
        break;
    default:
        printf("error!");
        break;
    }

    return 0;
}
int main()
{
    z();
    return 0;
}

定义学生结构,然后定义学生数组。循环输入学生成绩