数据结构请定义一个描述学生基本信息的结构,包括姓名、学号、身份证号、年龄、性别等,并定义一个结构体数组,再定义一个结构体类型的指针,使用结构体指针对数组进行操作: 1. 编写函数reverse(),将整个数组的元素倒置; 2. 请使用上面定义好的结构体,定义一个存放学生的顺序表,并进行初始化和输入输出指针类型
时间: 2023-05-31 18:04:20 浏览: 414
的函数。
结构体定义如下:
```c
struct student {
char name[20];
char student_id[10];
char id_number[18];
int age;
char gender[5];
};
typedef struct student Student;
```
结构体数组定义:
```c
Student students[100];
```
结构体指针定义:
```c
Student *ptr = students;
```
倒置函数定义:
```c
void reverse(Student *ptr, int n) {
Student temp;
for (int i = 0; i < n/2; i++) {
temp = *(ptr+i);
*(ptr+i) = *(ptr+n-1-i);
*(ptr+n-1-i) = temp;
}
}
```
顺序表定义:
```c
#define MAX_SIZE 100
typedef struct {
Student data[MAX_SIZE];
int length;
} SeqList;
```
初始化函数定义:
```c
void init(SeqList *list) {
list->length = 0;
}
```
输入函数定义:
```c
void input(SeqList *list) {
printf("请输入学生人数:");
scanf("%d", &(list->length));
printf("请按姓名 学号 身份证号 年龄 性别的顺序输入学生信息:\n");
for (int i = 0; i < list->length; i++) {
scanf("%s %s %s %d %s", list->data[i].name, list->data[i].student_id, list->data[i].id_number, &(list->data[i].age), list->data[i].gender);
}
}
```
输出函数定义:
```c
void output(SeqList list) {
printf("姓名\t学号\t身份证号\t年龄\t性别\n");
for (int i = 0; i < list.length; i++) {
printf("%s\t%s\t%s\t%d\t%s\n", list.data[i].name, list.data[i].student_id, list.data[i].id_number, list.data[i].age, list.data[i].gender);
}
}
```
阅读全文