C语言学生信息表的定义,插入,删除,查找,排序操作完整代码
时间: 2024-06-13 13:08:39 浏览: 171
以下是C语言学生信息表的定义,插入,删除,查找,排序操作完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 学生信息表最大容量
// 学生信息结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
float score; // 成绩
} Student;
// 学生信息表结构体
typedef struct {
Student data[MAX_SIZE]; // 学生信息数组
int length; // 学生信息表长度
} StudentTable;
// 初始化学生信息表
void initTable(StudentTable *table) {
table->length = 0;
}
// 插入学生信息
int insert(StudentTable *table, Student student) {
if (table->length == MAX_SIZE) { // 学生信息表已满
return 0;
}
table->data[table->length] = student;
table->length++;
return 1;
}
// 删除学生信息
int delete(StudentTable *table, char *id) {
int i;
for (i = 0; i < table->length; i++) {
if (strcmp(table->data[i].id, id) == 0) { // 找到要删除的学生信息
break;
}
}
if (i == table->length) { // 没有找到要删除的学生信息
return 0;
}
for (; i < table->length - 1; i++) {
table->data[i] = table->data[i + 1];
}
table->length--;
return 1;
}
// 查找学生信息
int search(StudentTable table, char *id, Student *result) {
int i;
for (i = 0; i < table.length; i++) {
if (strcmp(table.data[i].id, id) == 0) { // 找到要查找的学生信息
*result = table.data[i];
return 1;
}
}
return 0;
}
// 排序学生信息表
void sort(StudentTable *table) {
int i, j;
Student temp;
for (i = 0; i < table->length; i++) {
for (j = i + 1; j < table->length; j++) {
if (table->data[i].score < table->data[j].score) { // 按成绩从大到小排序
temp = table->data[i];
table->data[i] = table->data[j];
table->data[j] = temp;
}
}
}
}
int main() {
StudentTable table;
initTable(&table);
// 插入学生信息
Student s1 = {"001", "张三", 90};
Student s2 = {"002", "李四", 80};
Student s3 = {"003", "王五", 70};
insert(&table, s1);
insert(&table, s2);
insert(&table, s3);
// 删除学生信息
delete(&table, "002");
// 查找学生信息
Student result;
if (search(table, "001", &result)) {
printf("学号:%s,姓名:%s,成绩:%.2f\n", result.id, result.name, result.score);
} else {
printf("未找到该学生信息\n");
}
// 排序学生信息表
sort(&table);
// 输出学生信息表
printf("学号\t姓名\t成绩\n");
for (int i = 0; i < table.length; i++) {
printf("%s\t%s\t%.2f\n", table.data[i].id, table.data[i].name, table.data[i].score);
}
return 0;
}
```
阅读全文