用c语言请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭 住址,性别,联系方式等。并定义一个结构体数组。编程: a)编写函数input().输入基本信息(3~5条记录); b)编写函数 print(),输出全体记录信息; c)编写函数search().检索一个指定的学生信息并返回,由主函数打印到屏幕上; d)说明,访问结构的时候,什么时候应该用运算符“.”,什么时候应该用运算符“.>”(运算符前是结构体变量时用“.”,是指向结构体变量的指针时用“.>”)
时间: 2023-04-09 08:04:01 浏览: 587
使用结构体数组,利用函数实现按学生学号和姓名的查询操作.c
答:可以回答这个问题。
定义学生基本信息的结构体如下:
```c
struct student {
char name[20];
char id[20];
char hometown[20];
char id_card[20];
int age;
char address[50];
char gender[10];
char phone[20];
};
```
定义结构体数组:
```c
struct student stu[5];
```
编写函数input(),实现输入基本信息:
```c
void input(struct student *s, int n) {
int i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("姓名:");
scanf("%s", s[i].name);
printf("学号:");
scanf("%s", s[i].id);
printf("籍贯:");
scanf("%s", s[i].hometown);
printf("身份证号:");
scanf("%s", s[i].id_card);
printf("年龄:");
scanf("%d", &s[i].age);
printf("家庭住址:");
scanf("%s", s[i].address);
printf("性别:");
scanf("%s", s[i].gender);
printf("联系方式:");
scanf("%s", s[i].phone);
}
}
```
编写函数print(),实现输出全体记录信息:
```c
void print(struct student *s, int n) {
int i;
for (i = 0; i < n; i++) {
printf("第%d个学生的信息:\n", i + 1);
printf("姓名:%s\n", s[i].name);
printf("学号:%s\n", s[i].id);
printf("籍贯:%s\n", s[i].hometown);
printf("身份证号:%s\n", s[i].id_card);
printf("年龄:%d\n", s[i].age);
printf("家庭住址:%s\n", s[i].address);
printf("性别:%s\n", s[i].gender);
printf("联系方式:%s\n", s[i].phone);
}
}
```
编写函数search(),实现检索一个指定的学生信息并返回:
```c
struct student search(struct student *s, int n, char *id) {
int i;
for (i = 0; i < n; i++) {
if (strcmp(s[i].id, id) == 0) {
return s[i];
}
}
struct student empty = {"", "", "", "", 0, "", "", ""};
return empty;
}
```
访问结构的时候,当结构体变量是指针时,应该用运算符“->”,否则应该用运算符“.”。例如:
```c
struct student s;
struct student *p = &s;
s.age = 18; // 使用“.”访问结构体变量
p->age = 18; // 使用“->”访问指向结构体变量的指针
```
阅读全文