C语言实现学生信息表插入排序

本程序使用 C 语言实现学生信息表插入排序。用户输入学生信息,程序将新信息插入到已排序的表格中,并保持表格数据升序排列。

结构体定义:

typedef struct Student {
    int sno;
    char name[10];
    char sex;
    int age;
} Student;

typedef struct Table {
    Student stu[1000];
    int num;
} Table;

输入:

  • 第一行输入 n,表示学生人数。
  • 接下来 n 行表示 n 个学生信息,格式为:学号、姓名、性别、年龄,按升序排列。
  • 最后一行输入要插入的学生信息,格式为:学号、姓名、性别、年龄。

输出:

  • 输出插入后的学生信息,按升序排列。

C语言代码:

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

// 结构体定义 (如上所示)

int main() {
    Table table;
    int n, i, j;
    Student newStu;

    // 输入学生人数
    printf("请输入学生人数: ");
    scanf("%d", &n);

    // 输入学生信息
    printf("请输入学生信息 (学号 姓名 性别 年龄):\n");
    for (i = 0; i < n; i++) {
        scanf("%d %s %c %d", &table.stu[i].sno, table.stu[i].name, &table.stu[i].sex, &table.stu[i].age);
    }
    table.num = n;

    // 输入要插入的学生信息
    printf("请输入要插入的学生信息 (学号 姓名 性别 年龄): ");
    scanf("%d %s %c %d", &newStu.sno, newStu.name, &newStu.sex, &newStu.age);

    // 插入新学生信息
    i = table.num - 1;
    while (i >= 0 && newStu.sno < table.stu[i].sno) {
        table.stu[i + 1] = table.stu[i];
        i--;
    }
    table.stu[i + 1] = newStu;
    table.num++;

    // 打印插入后的学生信息
    printf("插入后的学生信息:\n");
    for (i = 0; i < table.num; i++) {
        printf("%d %s %c %d\n", table.stu[i].sno, table.stu[i].name, table.stu[i].sex, table.stu[i].age);
    }

    return 0;
}

代码说明:

  • 程序首先定义了 StudentTable 结构体,用于存储学生信息和表格数据。
  • 然后,程序从用户输入学生人数和学生信息。
  • 接着,程序输入要插入的学生信息。
  • 程序使用循环遍历已排序的表格,找到插入新学生信息的合适位置。
  • 将新学生信息插入到表格中,并更新表格的 num 属性。
  • 最后,程序打印插入后的学生信息。

代码示例:

输入:

3
1001 张三 M 18
1002 李四 F 19
1003 王五 M 20
1000 赵六 M 17

输出:

1000 赵六 M 17
1001 张三 M 18
1002 李四 F 19
1003 王五 M 20

总结:

本程序演示了如何使用 C 语言实现学生信息表插入排序。该算法简单易懂,能够有效地将新学生信息插入到已排序的表格中,并保持数据升序排列。

C语言实现学生信息表插入排序

原文地址: https://www.cveoy.top/t/topic/ojLL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录