如何创立一个函数输入新的结构体数组数据
时间: 2023-03-28 07:01:58 浏览: 83
要创立一个函数输入新的结构体数组数据,你需要先定义一个结构体类型,然后在函数中声明一个结构体数组变量,再通过循环语句输入每个结构体的数据。具体实现方法可以参考以下代码:
struct student {
char name[20];
int age;
float score;
};
void input(struct student stu[], int n) {
int i;
for (i = ; i < n; i++) {
printf("请输入第%d个学生的姓名、年龄和成绩:", i + 1);
scanf("%s%d%f", stu[i].name, &stu[i].age, &stu[i].score);
}
}
在这个例子中,我们定义了一个名为“student”的结构体类型,包含了姓名、年龄和成绩三个成员变量。然后我们定义了一个名为“input”的函数,它的参数是一个结构体数组和一个整数n,表示要输入的结构体数量。在函数中,我们通过循环语句输入每个结构体的数据,最终将数据存储在结构体数组中。
相关问题
1. 编程题 使用函数来对结构体数组中的数据进行输入、查询、输出。
好的,我可以帮你解答这个问题。以下是一个示例程序,用于对结构体数组进行输入、查询和输出:
```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` 函数输出结构体数组中的所有数据。
希望这个示例程序可以帮助你解决编程题。
c语言的scanf函数在输入结构体数组的时候,是不需要添加取地址符的嘛
在输入结构体数组时,使用scanf函数需要添加取地址符。这是因为scanf函数需要将输入的数据存入到变量的内存地址中,而结构体数组中的每个元素都是一个结构体变量,所以需要将结构体变量的地址作为参数传递给scanf函数,以便将输入的数据存储到结构体数组中。示例代码如下:
```
#include <stdio.h>
struct student {
char name[20];
int age;
};
int main() {
struct student s[3];
int i;
for(i = 0; i < 3; i++) {
printf("请输入第%d个学生的姓名和年龄:", i+1);
scanf("%s %d", s[i].name, &s[i].age);
}
return 0;
}
```
在上面的代码中,我们定义了一个包含3个元素的结构体数组s,然后使用for循环遍历数组,通过scanf函数分别输入每个学生的姓名和年龄。在输入年龄时,需要使用取地址符&将s[i].age的地址传递给scanf函数。