C语言实现学生信息表插入排序
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;
}
代码说明:
- 程序首先定义了
Student和Table结构体,用于存储学生信息和表格数据。 - 然后,程序从用户输入学生人数和学生信息。
- 接着,程序输入要插入的学生信息。
- 程序使用循环遍历已排序的表格,找到插入新学生信息的合适位置。
- 将新学生信息插入到表格中,并更新表格的
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 语言实现学生信息表插入排序。该算法简单易懂,能够有效地将新学生信息插入到已排序的表格中,并保持数据升序排列。
原文地址: https://www.cveoy.top/t/topic/ojLL 著作权归作者所有。请勿转载和采集!