第1关:结构体数组的定义和使用

任务描述

本关任务:编写程序从键盘输入5个学生的信息,在屏幕上输出这5个学生的信息。要求用结构体数组保存学生的信息,用函数实现结构体数组的输入输出。

代码如下:

#include<stdio.h>

#include<string.h>

typedef struct date

{   int year;

    int month;

    int day;

}DATE;

typedef struct student

{

     int num;

     char name[20];

     char sex;

     DATE birthday;

     float score;

}STUDENT;

void inputarr(STUDENT s[ ], int n);

void outputarr(STUDENT s[ ], int n);

int main()

    STUDENT b[5];

    inputarr(b,5);

    outputarr(b,5);

    return 0;

}

/********** Begin **********/

void inputarr(STUDENT s[ ], int n)

{

    int i;

for(i=0;i<n;i++)

scanf("%d %s %c %d %d %d %f",&s[i].num,s[i].name,&s[i].sex,&s[i].birthday.year,&s[i].birthday.month,&s[i].birthday.day,&s[i].score);}

void outputarr(STUDENT s[ ], int n)

{

    int i;

for(i=0;i<n;i++)

printf("学号:%d\t姓名:%s\t性别:%c\t出生日期:%d-%d-%d\t成绩:%.1f\n",s[i].num,s[i].name,s[i].sex,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].score);}

/********** End **********/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以按照以下步骤编写程序: 1. 定义一个结构体,包含学生的姓名、年龄、性别等信息。 2. 定义一个函数,用于输入学生信息。函数的参数为结构体数组和学生数量。 3. 在函数中使用循环,依次输入每个学生的信息。 4. 定义另一个函数,用于输出学生信息。函数的参数为结构体数组和学生数量。 5. 在函数中使用循环,依次输出每个学生的信息。 6. 在主函数中,定义一个结构体数组,调用输入函数和输出函数,完成程序的执行。 以下是示例代码: ```c #include <stdio.h> // 定义学生结构体 struct Student { char name[20]; int age; char gender; }; // 输入学生信息函数 void input(struct Student students[], int n) { for (int i = ; i < n; i++) { printf("请输入第%d个学生的姓名、年龄、性别:", i + 1); scanf("%s %d %c", students[i].name, &students[i].age, &students[i].gender); } } // 输出学生信息函数 void output(struct Student students[], int n) { for (int i = ; i < n; i++) { printf("第%d个学生的信息为:%s %d %c\n", i + 1, students[i].name, students[i].age, students[i].gender); } } int main() { // 定义结构体数组 struct Student students[5]; // 输入学生信息 input(students, 5); // 输出学生信息 output(students, 5); return ; } ``` ### 回答2: 本文将使用C语言编写程序,实现从键盘输入5个学生的信息,并在屏幕上输出这5个学生的信息。为了方便数据的管理和操作,本程序将使用结构体数组来保存学生的信息。整个程序将分为以下几步: 1. 定义结构体类型。 定义一个结构体类型,用来存储学生的信息。本程序将包括学号、姓名、性别、年龄和成绩五个方面的信息。定义代码如下: ```c typedef struct { int id; char name[20]; char sex[4]; int age; float grade; } Student; ``` 2. 定义函数输入学生的信息。 定义一个函数,用来从键盘输入5个学生的信息,并保存在结构体数组中。函数的返回值为一个包含5个学生信息的结构体数组。函数定义代码如下: ```c Student* inputStudents() { static Student students[5]; // 定义一个静态的结构体数组,用来保存5个学生信息。 int i; for (i = 0; i < 5; i++) { printf("请输入第%d个学生的信息:\n", i + 1); printf("学号:"); scanf("%d", &students[i].id); printf("姓名:"); scanf("%s", students[i].name); printf("性别:"); scanf("%s", students[i].sex); printf("年龄:"); scanf("%d", &students[i].age); printf("成绩:"); scanf("%f", &students[i].grade); printf("\n"); } return students; } ``` 在这个函数中,我们定义了一个静态的结构体数组students。然后使用for循环,逐个从键盘输入学生的各项信息,并保存到students数组中。最后,该函数返回一个包含全部学生信息的结构体数组students。 需要注意的是,为了在函数外面能够访问到students数组,我们需要将其定义为静态的。 3. 定义函数输出学生的信息。 定义一个函数,用来在屏幕上输出5个学生的信息。该函数将接收一个结构体数组作为参数,并在控制台上依次输出每个学生的信息。函数定义代码如下: ```c void outputStudents(Student* students) { int i; printf("学号\t姓名\t性别\t年龄\t成绩\n"); for (i = 0; i < 5; i++) { printf("%d\t%s\t%s\t%d\t%.2f\n", students[i].id, students[i].name, students[i].sex, students[i].age, students[i].grade); } } ``` 在这个函数中,我们首先输出表头,然后使用for循环逐个输出每个学生的信息。 4. 主函数 在主函数中,我们将依次调用inputStudents函数和outputStudents函数,从而实现从键盘输入5个学生的信息并在屏幕上输出这5个学生的信息。主函数代码如下: ```c int main() { Student* students; students = inputStudents(); outputStudents(students); return 0; } ``` 在这个主函数中,我们先调用inputStudents函数,获取到包含5个学生信息的结构体数组students。接着,我们将该数组作为参数传递给outputStudents函数,将5个学生的信息打印到屏幕上。最后,我们将程序结束。 ### 回答3: 这道题目要求我们从键盘输入5个学生的信息,并在屏幕上输出这5个学生的信息。为了实现输入输出这一操作,我们需要用到结构体数组和函数。 首先,在主函数中定义一个结构体类型,用来存储学生的信息,结构体中包括学生的姓名、学号、年龄和成绩等属性。然后,我们可以定义一个结构体数组,用来保存5个学生的信息。结构体数组的大小应为5,因为题目要求输入5个学生的信息。 接下来,我们需要定义两个函数,一个是用来输入学生信息的函数,另一个是用来输出学生信息的函数。在输入学生信息的函数中,我们可以通过for循环来逐一输入每个学生的姓名、学号、年龄和成绩等信息。由于结构体数组中每个元素都是一个结构体,所以我们可以通过结构体变量来访问每个元素的属性。 在输出学生信息的函数中,我们同样可以通过for循环来逐一输出每个学生的信息。输出信息的格式可以根据题目要求自定义,可以输出每个学生的姓名、学号、年龄和成绩等信息。 最后,在主函数中调用输入函数和输出函数,完成输入输出操作。代码如下: ```c // 定义结构体类型 struct Student { char name[20]; int id; int age; double score; }; // 定义输入函数 void input(struct Student stu[]) { int i; for (i = 0; i < 5; i++) { printf("请输入第 %d 个学生的信息:\n", i+1); printf("姓名:"); scanf("%s", stu[i].name); printf("学号:"); scanf("%d", &stu[i].id); printf("年龄:"); scanf("%d", &stu[i].age); printf("成绩:"); scanf("%lf", &stu[i].score); printf("\n"); } } // 定义输出函数 void output(struct Student stu[]) { int i; printf("学生信息如下:\n"); for (i = 0; i < 5; i++) { printf("姓名:%s,学号:%d,年龄:%d,成绩:%.1lf\n", stu[i].name, stu[i].id, stu[i].age, stu[i].score); } } // 主函数 int main() { // 定义结构体数组 struct Student stu[5]; // 输入学生信息 input(stu); // 输出学生信息 output(stu); return 0; } ``` 通过上述代码,我们可以实现从键盘输入5个学生的信息,并在屏幕上输出这5个学生的信息。这种方法可以使代码更加清晰、结构更加合理,使得输入输出操作更加方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值