嵌入式开发C语言学习day14-华清作业7.17

学习笔记

作业

//main.c
// 1>    完成班级的创建,创建时,需要传递班级实际人数
// 2>    完成班级学生的信息录入工作
// 3>    完成将班级学生按成绩进行降序排序工作
// 4>    输出班级中成绩最好和最差学生的信息
// 5>    完成信息的输出工作
// 6>    完成班级的销毁工作
// 要求:班级创建在堆区,尽量分文件编译完成

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

int main(int argc, char const *argv[])
{
    int size = 0, key = 0;
    struct Class *class = NULL;
    while (1)
    {
        menu();
        printf("\n");
        printf("请输入你要进行的操作:");
        scanf("%d", &key);
        printf("\n");
        switch (key)
        {
        case 1:
            printf("请确定班级的人数:");
            scanf("%d", &size);
            printf("\n");
            class = createclass(size);
            break;
        case 2:
            addStudent(&size, *class);
            break;
        case 3:
            searchStudent(&size, class);
            break;
        case 4:
            sort(&size, class);
            break;
        case 5:
            maxandmin(&size, class);
            break;
        case 6:
            destroy(class);
            break;
        case 0:
            return 0;
        }
    }

    return 0;
}
// student.c
// 定义函数

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

// 菜单
void menu()
{
    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==>6.对班级进行销毁\n");
    printf("\t\t==>0.退出\n");
};

// 完成班级的创建
struct Class *createclass(int size)
{
    struct Class *class = (struct Class *)malloc(sizeof(struct Class));
    class->size = size;
    if (NULL != class)
    {
        printf("创建班级成功\n");
    }
    else if (NULL == class)
    {
        printf("创建班级失败\n");
    }
    return class;
}

// 录入信息
void addStudent(int *size, struct Class *class)
{
    for (int i = 0; i < *size; i++)
    {
        printf("请输入第%d个学生的姓名:", i + 1);
        scanf("%s", class->student[i].name);
        printf("请输入第%d个学生的年龄:", i + 1);
        scanf("%d", &class->student[i].age);
        printf("请输入第%d个学生的成绩:", i + 1);
        scanf("%lf", &class->student[i].score);
    }
    printf("\n");
};
// 查看学生信息
void searchStudent(int *size, struct Class *class)
{
    for (int i = 0; i < *size; i++)
    {
        printf("第%d个学生的姓名: %s 年龄: %d 成绩: %.2lf \n", i + 1,
               class->student[i].name,
               class->student[i].age,
               class->student[i].score);
    }
    printf("\n");
};
// 对班级学生按成绩进行降序
void sort(int *size, struct Class *class)
{
    for (int i = 0; i < *size; i++)
    {
        for (int j = 0; j < *size - i - 1; j++)
        {
            if (class->student[j].score <= class->student[j + 1].score)
            {
                double temp = class->student[j].score;
                class->student[j].score = class->student[j + 1].score;
                class->student[j + 1].score = temp;
            }
        }
    }
    printf("排序完成后:\n");
    for (int i = 0; i < *size; i++)
    {
        printf("第%d个学生的姓名: %s 年龄: %d 成绩: %.2lf \n", i + 1,
               class->student[i].name,
               class->student[i].age,
               class->student[i].score);
    }
    printf("\n");
}
// 输出最好和最差的学生的信息
void maxandmin(int *size, struct Class *class)
{
    // 输出最高最低成员的成绩
    int max = 0, min = 1000;
    struct Stu maxstudent, minstudent;
    for (int i = 0; i < *size; i++)
    {

        if (class->student[i].score > max)
        {
            max = class->student[i].score;
            maxstudent = class->student[i];
        }
        if (class->student[i].score < min)

        {
            min = class->student[i].score;
            minstudent = class->student[i];
        }
    }
    printf("最好成绩学生姓名: %s 年龄: %d 成绩: %.2lf\n", maxstudent.name, maxstudent.age, maxstudent.score);
    printf("最差成绩学生姓名: %s 年龄: %d 成绩: %.2lf\n", minstudent.name, minstudent.age, minstudent.score);
    printf("\n");
};

// 释放内存空间
void destroy(struct Class *class)
{
    if (NULL!= class)
    {
        free(class); // 释放空间
        printf("内存空间已释放\n");
    }
}
// student.h
// 头文件
#ifndef STUDENT_H
#define STUDENT_H
#define MAX 100 // 最大容量

// 定义学生类型
struct Stu
{
    char name[20];
    int age;
    double score;
};
// 定义班级类型
struct Class
{
    struct Stu student[MAX]; // 存放学生的容器
    int size;                // 实际人数
};

void menu();
struct Class *createclass();
void addStudent();
void searchStudent();
void sort();
void maxandmin();
void destroy();

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值