Day 08 作业

思维导图

作业:

完成学生管理系统

1>使用菜单完成

2>有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入

3>查看学生信息:输出所有学生姓名以及对应的分数

4>求出学习最好的学生信息:求最大值

5>按姓名将所有学生进行升序排序

6>按成绩将学生学生进行升序排序

要求每个功能使用函数完成

代码:

#include<stdio.h>
#include<string.h>

int N = 0;
char name[50][10] = {""};
int fenshu[50] = {};

void print_menu()
{
    printf("\t\t1、学生信息录入\n");
    printf("\t\t2、查看学生信息\n");
    printf("\t\t3、学习最好的学生信息\n");
    printf("\t\t4、按姓名升序\n");
    printf("\t\t5、按成绩升序\n");
    printf("\t\t0、退出\n");
}

void xingxiluru(int n)
{
    for(int i=0;i<n;i++)
    {
        printf("请输入第%d位学生的姓名与成绩:",i+1);
        scanf("%s %d", &name[i],&fenshu[i]);
    }
    puts("");
}

void chakan(void)
{
    printf("学生信息:\n");
    for(int i=0;i<N;i++)
    {
        printf("姓名:%s\t",name[i]);
        printf("成绩:%d\n",fenshu[i]);
    }
    puts("");
}

int  MAX(void)
{
    int max=0;
    for(int i=1;i<N;i++)
    {
        if(fenshu[max]<fenshu[i])
        {
            max = i;
        }
    }
    return max;
}

void xmpaixu(void)
{
    char temp[20] = "";
    for(int i=1;i<N;i++)
    {
        for(int j=0;j<N-i;j++)
        {
            if(strcmp(name[j],name[j+1])>0)
            {
                strcpy(temp, name[j]);
                strcpy(name[j],name[j+1]);
                strcpy(name[j+1],temp);

                int temp2 = fenshu[j];
                fenshu[j] = fenshu[j+1];
                fenshu[j+1] = temp2;
            }
        }
    }
    printf("按名字排序为:\n");
    for(int i=0;i<N;i++)
    {
        printf("姓名:%s\t", name[i]);
        printf("成绩:%d\n", fenshu[i]);
    }
    puts("");
}

void cjpx(void)
{
    char temp[20] = "";
    for (int i=1; i < N; i++)
    {
        for (int j = 0; j < N - i; j++)
        {
            if (fenshu[j] > fenshu[j + 1])
            {

                int temp2 = fenshu[j];
                fenshu[j] = fenshu[j + 1];
                fenshu[j + 1] = temp2;
                
                strcpy(temp, name[j]);
                strcpy(name[j], name[j+1]);
                strcpy(name[j+1], temp);
            }
        }
    }
    printf("按成绩排序为:\n");
    for(int i=0;i<N;i++)
    {
        printf("姓名:%s\t", name[i]);
        printf("成绩:%d\n", fenshu[i]);
    }
    puts("");
}

int main(int argc, const char *argv[])
{
    int menu = 0;
    while(1)
    {
        print_menu();
        printf("请输入:");
        scanf("%d",&menu);
        getchar();

        switch(menu)
        {
            case 0:
                        {
                            goto end;
                        }
                        break;
            case 1:
                        {
                            printf("请输入学生人数:");
                            scanf("%d",&N);
                            xingxiluru(N);
                        }
                        break;
            case 2:
                        {
                            chakan();
                        }
                        break;
            case 3:
                        {
                            int max = MAX();
                            printf("成绩最好的学生是%s\n",name[max]);
                            printf("Ta的成绩是%d",fenshu[max]);
                            puts("");
                        }
                        break;
            case 4:
                        {
                            xmpaixu();
                        }
                        break;
            case 5:
                        {
                            cjpx();
                        }
                        break;
            default:printf("输入错误,请重新输入\n");
        }
    }
    end:
    return 0;
}

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值