11(3).通过结构体与指针实现简单的学生管理系统(存储,排序,输出)

本人坚持更新C语言和数据结构知识,可以收藏+关注随时了解


目录

上代码

实现思路

运行结果


我们这里实现最基本的学生管理系统,没有采用链式的存储,而是采用了顺序存储结构,使用到了结构体,指针,以及动态内存分配(动态内存分配在我先前的文章中有更新)。

上代码

#include 
#include 
#include 
using namespace std;
// void sort_student(struct *q, int len);
//定义结构体
struct Student
{
    char name[20]; //姓名
    float score;   //分数
};
//根据分数降序来排列学生成绩,采用的是选择排序
void sort_student(struct Student *q, int len)
{
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = i + 1; j < len; j++)
        {
            if ((q + i)->score < (q + j)->score)
            {
                struct Student temp; //交换学生信息
                temp = *(q + i);
                *(q + i) = *(q + j);
                *(q + j) = temp;
            }
        }
    }
}
int main(int argc, char const *argv[])
{
    // cout << sizeof(struct Student) << endl;
    int len; //定义学生数量
    cout << "please input the number of students:" << endl;
    cin >> len;
    struct Student *p = (struct Student *)malloc(sizeof(struct Student) * len);
    //我们要定义动态定义一个数组来存储结构体变量们,所以p的类型得是struct Student,所需要的内存是(sizeof Student)*len;
    for (int i = 0; i < len; i++)
    {
        cout << "Please input N0." << i + 1 << "student information" << endl;
        cout << "Please input the name of student:" << endl; //输入学生姓名
        cin >> (p + i)->name;
        // scanf("%s",p[i].name) name是数组名,本身已经是数组首元素的地址
        cout << "Please input the score of student:" << endl;
        cin >> (p + i)->score;
    }
    sort_student(p, len); //按照分数降序排列学生的次序
    //输出学生信息
    cout << "--------------------The Student Score Information--------------------" << endl;
    for (int i = 0; i < len; i++)
    {
        cout << "name:" << (p + i)->name << "   score:" << (p + i)->score << endl;
    }
    cout << "---------------------------------------------------------------------" << endl;
    return 0;
}

 

实现思路

1.我们定义结构体struct Student;

2.确定学生个数,int len

3.根据学生的个数,动态分配内存

        struct Student *p = (struct Student *)malloc(sizeof(struct Student) * len);

4.使用for循环输入学生信息

5.编写排序函数

        void sort_student(struct Student *q, int len)

6.使用for循环输出排序后的学生信息

运行结果

11(3).通过结构体与指针实现简单的学生管理系统(存储,排序,输出)_第1张图片

 我们可以看到,输出的学生信息中,根据成绩排名输出学生信息

你可能感兴趣的:(C语言,c语言,c++,开发语言)