0717作业+梳理

一、作业

1.主程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"my.h"
#define MAX 20

int main(int argc,char const *argv)
{
    
    //struct Class banji;//定义一个班级
    int num =0;
    printf("请输入该班级人数:\n");
    scanf("%d",&num);
    struct Class *banji = create(num);//调用函数创建一个班级学生管理系统
    int menu = 0;//定义菜单元素
    


    //使用菜单函数
    while(1)
    {
        me_nu();
        printf("请输入:");
        scanf("%d",&menu);
        getchar();
    

    
    //菜单
    switch(menu)
    {
         case 1:
        {
            student_1(banji);
        }
        break;
         case 2:
        {
           student_2(banji);
        }
        break;
         case 3:
        {
            student_3(banji);
        }
        break;
        case 4:
        {
            student_4(banji);
        }
        break;
          case 5:
        {
            destroy(banji);
            banji = NULL;
        }
        break;
         case 0:
        {
            goto END;
        }
        default:
        printf("您输入的内容有误,请重新输入\n");
    }
    }
    END:
    return 0;
}

2.源文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20

//结构体输入学生信息
struct Stu 
{
    char name[20];      //姓名
    int age;           //年龄
    int score;      //成绩
};
//结构体输入班级信息
struct Class
{
    struct Stu stu_dent[MAX];
    int num;
};

//菜单函数
void me_nu(void)
{
    printf("\t\t======1:学生信息录入\n");
    printf("\t\t======2:按成绩降序排序\n");
    printf("\t\t======3:成绩最好和最差的学生信息\n");
    printf("\t\t======4:学生信息输出\n");
    printf("\t\t======5:销毁班级\n");
    printf("\t\t======0:退出\n");
}

//定义函数创建一个可以容纳整个系统的空间在堆区
struct Class *create(int num)
{
    //在堆区申请1个struct class类型的空间大小
    struct Class *banji = (struct Class*)malloc(sizeof(struct Class));
    //申请一个stru stu类型的空间大小
    if(NULL == banji)
    {
        printf("申请失败\n");
        return NULL;
    }
    //程序执行至此表示内存申请成功
    //对内存空间进行初始化
    memset(banji,0,sizeof(struct Class));
    banji->num = num;
    //返回内存地址给主函数
    return banji;
}

//学生信息录入函数
void student_1(struct Class *banji)
{
    
    for(int i=0;i<banji->num;i++)
    {
        printf("请输入第%d名学生的姓名\n",i+1);
        scanf("%s",banji->stu_dent[i].name);
        printf("请输入第%d名学生的年龄\n",i+1);
        scanf("%d",&banji->stu_dent[i].age);
        printf("请输入第%d名学生的成绩\n",i+1);
        scanf("%d",&banji->stu_dent[i].score);
    }
    printf("录入成功\n");
}

//按成绩降序排序
void student_2(struct Class *banji)
{
    for(int i = 1;i<banji->num;i++)
    {
        for(int j=0;j<banji->num-i;j++)
        {
            if(banji->stu_dent[j].score<banji->stu_dent[j+1].score)
        {
           //交换三部曲
           struct Stu temp = banji->stu_dent[j];
           banji->stu_dent[j] = banji->stu_dent[j+1];
           banji->stu_dent[j+1] = temp;
        }
        }
    }
    printf("排序成功\n");
}
//成绩最好和最差的学生成绩
void student_3(const struct Class *banji)
{
    
    int best = banji->stu_dent[0].score;
    int worst = banji->stu_dent[0].score;
    int count1=0;
    int count2 = 0;
    //将第一位学生当做最值
    for(int i=0;i<banji->num;i++)
    {
        
        if(best<banji->stu_dent[i].score)
        {
            best = banji->stu_dent[i].score;
            count1 = i;
        }
    }
     for(int i=0;i<banji->num;i++)
    {
         if(worst>banji->stu_dent[i].score)
        {
            worst = banji->stu_dent[i].score;
            count2 = i;
        }
    }
     printf("成绩最好的学生信息为:%s\t%d%d\n",banji->stu_dent[count1].name,banji->stu_dent[count1].age,banji->stu_dent[count1].score);
     printf("成绩最差的学生信息为:%s\t%d\t%d\n",banji->stu_dent[count2].name,banji->stu_dent[count2].age,banji->stu_dent[count2].score);
}
//学生信息输出
void student_4(const struct Class *banji)
{
   printf("排序后的学生信息如下:\n");
   printf("姓名\t年龄\t成绩\n");
   for(int i=0;i<banji->num;i++)
   {
       printf("%s\t%d\t%d\n",banji->stu_dent[i].name,banji->stu_dent[i].age,banji->stu_dent[i].score);
   }
}
//定义函数销毁该班级
void destroy(struct Class *banji)
{
    if(NULL != banji)
    {
        free(banji);
        banji = NULL;
    }
    printf("销毁成功\n");
}

3.函数声明

#ifndef TEST_H
#define TEST_H

void me_nu(void);

struct Class *create(int num);
 
void student_1(struct Class *p);
 
void student_2(struct Class *p);
 
void student_3(struct Class *p);
 
void student_4(struct Class *p);
 
void destroy(struct Class *p);

#endif

二、思维导图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值