c语言用顺序表写学号判断
时间: 2024-02-17 17:04:50 浏览: 83
可以通过定义结构体来实现用顺序表存储学号的功能,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义线性表最大长度
// 定义学生结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
int age; // 年龄
char gender; // 性别
} Student;
// 定义顺序表结构体
typedef struct {
Student data[MAX_SIZE]; // 存放学生信息的数组
int length; // 顺序表长度
} SeqList;
// 初始化顺序表
void init(SeqList *L) {
L->length = 0; // 初始长度为0
}
// 插入学生信息
int insert(SeqList *L, Student stu) {
if (L->length == MAX_SIZE) { // 判断顺序表是否已满
return 0;
}
L->data[L->length] = stu; // 将学生信息插入顺序表末尾
L->length++; // 顺序表长度加1
return 1;
}
// 按学号查找学生信息
int search(SeqList L, char id[], Student *stu) {
int i;
for (i = 0; i < L.length; i++) {
if (strcmp(L.data[i].id, id) == 0) { // 判断学号是否相同
*stu = L.data[i]; // 将找到的学生信息赋值给stu
return 1;
}
}
return 0;
}
int main() {
SeqList L;
init(&L); // 初始化顺序表
// 插入学生信息
Student stu1 = {"101", "张三", 18, 'M'};
insert(&L, stu1);
Student stu2 = {"102", "李四", 19, 'F'};
insert(&L, stu2);
Student stu3 = {"103", "王五", 20, 'M'};
insert(&L, stu3);
// 按学号查找学生信息
char id[20];
printf("请输入学号:");
scanf("%s", id);
Student stu;
if (search(L, id, &stu)) {
printf("学生信息:\n");
printf("学号:%s\n", stu.id);
printf("姓名:%s\n", stu.name);
printf("年龄:%d\n", stu.age);
printf("性别:%c\n", stu.gender);
} else {
printf("查无此人!\n");
}
return 0;
}
```
在该程序中,我们定义了一个结构体 `Student` 来存储学生信息,包括学号、姓名、年龄和性别。我们又定义了一个结构体 `SeqList` 来存储学生信息的顺序表,其中 `data` 数组存放学生信息,`length` 表示顺序表长度。在 `main` 函数中,我们插入了三个学生信息,并通过 `search` 函数按学号查找学生信息。
阅读全文