Arrays 为什么我的结构阵列不工作?
Arrays 为什么我的结构阵列不工作?,arrays,c,pointers,structure,Arrays,C,Pointers,Structure,编写一个程序,定义struct student以保存学生的以下信息: 姓氏、其他姓名、地址、年龄。该程序应具有以下功能: 一个函数inputStudent(),它将student结构作为参数,并允许 存储在struct参数中的数据。 函数displayStudent(),它将student结构作为参数并显示 屏幕上的属性值。 程序应声明两个student类型的变量,允许输入两个student和 将它们存储在这些变量中。然后,程序应显示较老用户的姓名和地址 两人中的一个学生。如果他们年龄相
我对问题2有问题。。我创建了一个结构数组,但我有错误,我不知道如何更正它们。 我犯了什么错误?请帮忙。多谢各位
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student{
char surname[50];
char otherNames[70];
char addr[50];
int age;
};
struct student inputStudent(struct student *s){
printf("Enter surname: ");
fgets(s->surname,50,stdin);
printf("Enter other names: ");
fgets(s->otherNames,70,stdin);
printf("Enter address: ");
fgets(s->addr,50,stdin);
printf("Enter age: ");
scanf("%d",&s->age);
getchar();
printf("\n");
}
void displayStudent(struct student *s){
printf("Surname: %s" ,s->surname);
printf("Other names: %s", s->otherNames);
printf("Address: %s ",s->addr);
printf("\n");
}
int main()
{
struct student c[20];
int n;
printf("Enter a number: ");
scanf("%d",&n);
for(int i=0;i<20;i++){
intputStudent(&c);
}
int youngest =100;
for(int i=0;i<20;i++){
if(c[i].age < youngest){
displayStudent(&c[i]);
}
}
return 0;
}
#包括
#包括
#包括
结构学生{
查氏[50];
char其他名称[70];
字符地址[50];
智力年龄;
};
结构学生输入学生(结构学生*s){
printf(“输入姓氏:”);
fgets(s->姓氏,50,stdin);
printf(“输入其他名称:”);
fgets(s->otherNames,70,stdin);
printf(“输入地址:”);
fgets(s->addr,50,标准);
printf(“输入年龄:”);
scanf(“%d”,&s->age);
getchar();
printf(“\n”);
}
无效显示学生(结构学生*s){
printf(“姓氏:%s”,s->姓氏);
printf(“其他名称:%s”,s->otherNames);
printf(“地址:%s”,s->addr);
printf(“\n”);
}
int main()
{
结构学生c[20];
int n;
printf(“输入一个数字:”);
scanf(“%d”和“&n”);
对于(int i=0;i您应该只输入n
学生,而不是20
。您只需要将数组中当前学生的地址传递给inputstudior()
,而不是整个数组的地址
然后在你输入所有数据后,你需要找到年龄最小的学生的索引。你正在打印每个年龄小于100岁的学生
for(int i=0;i<n;i++){
intputStudent(&c[i]);
}
int youngest = c[0].age;
int youngest_index = 0;
for(int i=1;i<n;i++){
if(c[i].age < youngest){
youngest = c[i].age;
youngest_index = i;
}
}
displayStudent(c[youngest_index]);
for(int i=0;ii<20
应该是i
——这不是你要求n
的原因吗?在循环结束之前,你无法知道一个学生是否是最小的。你显示的是所有小于100岁的学生,而不是最小的学生。好吧,那么你“有错误”。您是否尝试阅读它们?您是否尝试找出它们所指的代码的哪一部分?您是否尝试将这些错误消息的文本放入搜索引擎?您是否尝试查找有关这些错误消息的堆栈溢出的其他问题?