用c语言写构造学生信息表抽象数据类型,包含姓名,性别,年龄,分数。
时间: 2024-09-09 22:16:45 浏览: 133
在C语言中,构造一个学生信息表的抽象数据类型(ADT)可以通过定义一个结构体来实现,结构体中包含姓名、性别、年龄和分数等字段。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息的结构体
typedef struct {
char name[50]; // 学生姓名
char gender[10]; // 性别 "male" 或 "female"
int age; // 年龄
float score; // 分数
} Student;
// 创建学生信息表的结构体,包含学生数组和学生数量
typedef struct {
Student *students; // 学生数组
int student_count; // 当前学生数量
} StudentTable;
// 函数声明
void initStudentTable(StudentTable *table, int capacity);
void addStudent(StudentTable *table, Student student);
void printStudentTable(const StudentTable *table);
void freeStudentTable(StudentTable *table);
// 初始化学生信息表
void initStudentTable(StudentTable *table, int capacity) {
table->students = (Student *)malloc(sizeof(Student) * capacity);
table->student_count = 0;
}
// 添加学生信息到表中
void addStudent(StudentTable *table, Student student) {
if (table->student_count >= capacity) {
// 如果表已满,需要扩容
Student *new_students = (Student *)realloc(table->students, sizeof(Student) * (table->student_count + 1));
if (new_students == NULL) {
// 处理扩容失败的情况
exit(EXIT_FAILURE);
}
table->students = new_students;
}
table->students[table->student_count++] = student;
}
// 打印学生信息表
void printStudentTable(const StudentTable *table) {
printf("Student Information Table:\n");
for (int i = 0; i < table->student_count; ++i) {
printf("Name: %s, Gender: %s, Age: %d, Score: %.2f\n",
table->students[i].name,
table->students[i].gender,
table->students[i].age,
table->students[i].score);
}
}
// 释放学生信息表占用的内存
void freeStudentTable(StudentTable *table) {
free(table->students);
table->students = NULL;
table->student_count = 0;
}
int main() {
StudentTable table;
initStudentTable(&table, 10); // 初始化一个最多可以存放10个学生的表
// 添加学生信息
Student student1 = {"Alice", "female", 20, 85.5};
addStudent(&table, student1);
// ... 可以继续添加更多学生信息
// 打印学生信息表
printStudentTable(&table);
// 释放内存
freeStudentTable(&table);
return 0;
}
```
在这个例子中,我们定义了两个结构体:`Student` 和 `StudentTable`。`Student` 结构体用于存储单个学生的信息,而 `StudentTable` 结构体用于管理一个学生数组及其数量。我们还提供了几个函数用于初始化表、添加学生信息、打印学生信息和释放表所占用的内存。
阅读全文