【发布时间】:2021-02-23 20:55:42
【问题描述】:
- 编写一个程序,定义一个结构 student 来保存学生的以下信息: 姓氏,其他名字,地址,年龄。该程序应具有以下功能: 一个函数 inputStudent(),它将一个学生结构作为参数并允许输入 存储在 struct 参数中的数据。 一个函数 displayStudent(),它将一个学生结构作为参数并显示 屏幕上的属性值。 该程序应声明两个学生类型的变量,允许为两个学生输入数据,并且 将它们存储在这些变量中。然后程序应显示较旧的姓名和地址 两人之中的学生。如果他们年龄相同,程序应显示姓名和 他们两个的地址。
- 修改问题 2 中的程序,使 main() 函数声明一个大小为 20 的数组 struct student,允许输入一个整数值 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,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;
}
【问题讨论】:
-
i < 20应该是i < n-- 这不是你要求n的原因吗? -
在循环结束之前,您无法知道学生是否最小。您显示的是所有 100 岁以下的学生,而不是最年轻的学生。
-
好的,所以你“有错误”。你有没有尝试阅读它们?您是否试图弄清楚他们指的是代码的哪一部分?您是否尝试将这些错误消息的文本放入搜索引擎?您是否尝试在 Stack Overflow 上查找有关这些错误消息的其他问题?
标签: arrays c pointers structure