1. 编程题 使用函数来对结构体数组中的数据进行输入、查询、输出。
时间: 2024-03-16 08:47:36 浏览: 200
好的,我可以帮你解答这个问题。以下是一个示例程序,用于对结构体数组进行输入、查询和输出:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NUM 100
typedef struct {
char name[20];
int age;
char gender;
} Person;
void inputPersons(Person persons[], int num);
void queryPersonByName(Person persons[], int num, char name[]);
void outputPersons(Person persons[], int num);
int main() {
int num;
Person persons[MAX_NUM];
printf("请输入人数:");
scanf("%d", &num);
inputPersons(persons, num);
char queryName[20];
printf("请输入要查询的姓名:");
scanf("%s", queryName);
queryPersonByName(persons, num, queryName);
outputPersons(persons, num);
return 0;
}
void inputPersons(Person persons[], int num) {
int i;
for (i = 0; i < num; i++) {
printf("请输入第%d个人的姓名、年龄和性别(用空格隔开):", i + 1);
scanf("%s %d %c", persons[i].name, &persons[i].age, &persons[i].gender);
}
}
void queryPersonByName(Person persons[], int num, char name[]) {
int i, found = 0;
for (i = 0; i < num; i++) {
if (strcmp(persons[i].name, name) == 0) {
printf("找到了名字为%s的人,他/她的年龄是%d,性别是%c\n", name, persons[i].age, persons[i].gender);
found = 1;
break;
}
}
if (!found) {
printf("没有找到名字为%s的人\n", name);
}
}
void outputPersons(Person persons[], int num) {
int i;
printf("所有人的信息如下:\n");
for (i = 0; i < num; i++) {
printf("姓名:%s,年龄:%d,性别:%c\n", persons[i].name, persons[i].age, persons[i].gender);
}
}
```
这个程序中,我们定义了一个结构体 `Person`,包含三个成员变量:姓名、年龄和性别。然后,我们使用三个函数来对这个结构体数组进行输入、查询和输出:
- `inputPersons` 函数用于输入结构体数组中的数据,它接收两个参数:结构体数组 `persons` 和人数 `num`。
- `queryPersonByName` 函数用于查询指定姓名的人的信息,它接收三个参数:结构体数组 `persons`、人数 `num` 和要查询的姓名 `name`。
- `outputPersons` 函数用于输出结构体数组中的所有数据,它接收两个参数:结构体数组 `persons` 和人数 `num`。
在 `main` 函数中,我们首先输入人数,然后调用 `inputPersons` 函数输入结构体数组中的数据。接着,我们输入要查询的姓名,并调用 `queryPersonByName` 函数查询指定姓名的人的信息。最后,我们调用 `outputPersons` 函数输出结构体数组中的所有数据。
希望这个示例程序可以帮助你解决编程题。
阅读全文