【发布时间】:2021-02-04 15:13:12
【问题描述】:
任务:我们需要使用循环创建 7 个名为 parent[1-7] 的结构对象。然后让用户输入他们的姓名、年龄、孩子的名字。之后 1) 打印具有最大家庭的父母的姓名。 2)为最短名字的父母打印最长的孩子名字(与其他人相比)我知道,听起来已经很混乱了。并且 3) 打印出父母的所有给定信息(姓名、年龄、孩子姓名/姓名),这些信息大于 7 位父母的平均年龄。
问题:我遇到了一个问题,我什至无法为程序设置此权限以扫描用户输入。我添加了一个新的struct 对象和scanf 供用户插入他有多少个孩子,以便以后更方便地访问,但是当我输入该数字(例如 2 或 3 个孩子)时它会一直崩溃。老实说,我不知道如何完成这项任务的其他部分。
这就是目前程序的样子(我在大学的第一年,所以我希望我犯了一些错误):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int max=3;
int j=0;
struct parents
{
char name[30];
int age;
int kid_count;
char kid_name[30];
};
int main()
{
for(j=0; j<max; j++)
{
struct parents parent[7];
parent[j].name;
parent[j].age;
parent[j].kid_count;
parent[j].kid_name;
printf("Parent %d Enter parent name \n",j+1);
scanf(" %s", &parent[j].name);
printf("Parent %d Enter parent age \n",j+1);
scanf(" %d", &parent[j].age);
printf("Parent %d Enter how many kids he has \n",j+1);
scanf(" %d", &parent[j].kid_count);
printf("Parent %d child name \n",j+1);
scanf(" %s", &parent[j].kid_name);
}
return 0;
}
【问题讨论】:
-
读取字符串时去掉
&。编译器也应该警告过你。 -
改成定长数组
struct parents parent[j];=>struct parents parent[7];。您在每次迭代中创建一个 j 大小的可变长度数组。您无法访问j大小的数组中的元素[j]。j-1是最后一个元素。 -
struct parents parent[j];- 这行应该做什么?它是长度为j的数组parent的定义。很确定你想在循环之外定义它。
标签: arrays c loops for-loop struct