如何解决为什么我的一系列结构不起作用?
- 编写一个程序,该程序定义结构学生以保存学生的以下信息: 姓,其他名字,地址,年龄。该程序应具有以下功能: 函数inputStudent(),它以学生结构作为参数并允许输入 存储在struct参数中的数据。 函数displayStudent(),它以学生结构作为参数并显示 屏幕上的属性值。 该程序应声明两个学生类型的变量,允许输入两个学生的数据,并且 将它们存储在这些变量中。然后,程序应显示较旧的名称和地址 两个学生之间。如果年龄相同,则程序应显示名称和 他们两个的地址。
- 修改问题2的程序,以便main()函数声明大小为20的数组。 struct学生,允许输入整数n,并为n个学生执行数据输入, 然后将它们显示回来。然后,程序应显示姓名,住所和年龄 数组中最年轻的学生。如果有几个年龄最小的学生,该计划将 仅显示第一个。
我在Question2上遇到问题。我创建了一个结构数组,但有错误,我不知道如何纠正它们。 我犯了什么错误?请帮忙。谢谢。
#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,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;
}
解决方法
您应该只输入n
个学生,而不要输入20
。您只需将数组中当前学生的地址传递给inputStudent()
,而不是整个数组的地址。
然后将它们全部输入后,您需要找到年龄最小的学生的索引。您正在打印每个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]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。