C语言入门(6)

完成学生管理系统

1> 使用菜单完成

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

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

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

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

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

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

#include<stdio.h>
#include<string.h>
int arr[50]={0};
char name[50][50]={""};
int n=0;
// 姓名成绩数组和人数定义


void shuru()
{
    printf("请输入学生人数\n");
    scanf("%d",&n);
    getchar();
    for (int i = 0; i < n; i++)
    {
        printf("请输入学生姓名:\n");
        gets(name[i]);
        printf("请输入学生成绩:\n");
        scanf("%d",&arr[i]);
        getchar();
    }
    
}
// 输入学生的人数姓名成绩的函数

void shuchu()
{
    for (int i = 0; i < n; i++)
    {
        printf("%s:\t",name[i]);
        printf("%d\t",arr[i]);
        printf("       ");
    }
    printf("\n");
}
// 输出所有学生及其对应的成绩

void max()
{
    int maxi=0,max=0;
    for (int i = 0; i < n; i++)
    {
        if (max<arr[i])
        {
            maxi=i;
            max=arr[i];
        }
        
    }
    printf("成绩最好的学生是%s,他的成绩为:%d\n",name[maxi],arr[maxi]);
}
// 输出成绩最好的学生信息


void name_s()
{
    for (int i = 0; i < n; i++)
    {
        char max[20]="";
        int maxi=0;
       for (int j = 0; i < n-i; i++)
       {

        if (strcmp(max,name[j])<0)
        {
            strcpy(max,name[j]);
            maxi=j;
        }
        //找到未排序数组中的最大值
       }
       char temp[20]="";
       strcpy(temp,name[maxi]);
       strcpy(name[maxi],name[n-i-1]);
       strcpy(name[n-i-1],temp);
       int temp1=arr[maxi];
       arr[maxi]=arr[n-i-1];
       arr[n-i-1]=temp1;

        //与未排序的数组的最后一位交换
    }
    printf("根据姓名排序后的数组为:");
    for (int i = 0; i < n; i++)
    {
        printf("%s:%d",name[i],arr[i]);
        printf("       ");
        //输出排序后结果
    }
    printf("\n");
}
//按姓名将所有学生按升序排序

void arr_s()
{

    for (int i = 0; i < n; i++)
    {
        int max=0;
        int maxi=0;
        for (int j = 0; j < n-i; j++)
        {
            if (max<arr[j])
            {
                maxi=j;
                max=arr[j];
            }
            
        }
       char temp[20]="";
       strcpy(temp,name[maxi]);
       strcpy(name[maxi],name[n-i-1]);
       strcpy(name[n-i-1],temp);
       int temp1=arr[maxi];
       arr[maxi]=arr[n-i-1];
       arr[n-i-1]=temp1;
    }
      printf("根据成绩排序后的数组为:");
    for (int i = 0; i < n; i++)
    {
        printf("%s:%d",name[i],arr[i]);
        printf("       ");
        //输出排序后结果
    }
    printf("\n");

}
//按成绩升序排序

int main()
{
    while (1)
    {
        printf("========菜单========\n");
        printf("1,输入学生的人数,输入学生的姓名和成绩\n");
        printf("2,输出所有学生的姓名以及对应的成绩\n");
        printf("3,求出学习最好的学生的信息\n");
        printf("4,按学生姓名进行升序排序并输出\n");
        printf("5,按学生的成绩进行升序排序并输出\n");
        printf("请输入要执行的操作,退出系统请输出0\n");
        int p=0;
        scanf("%d",&p);
        printf("\n");
        switch (p)
        {
        case 1:
        {
            shuru();
        }
            break;
        case 2:
        {
            shuchu();
        }
            break;
        case 3:
        {
            max();
        }
        break;
    case 4:
    {
        name_s();
    }
        break;
    case 5:
    {
        arr_s();
    }
        break;
    case 0:
    {
        return 0;
    }
        break; 
    default:
        break;
        }
        }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值