📜  C |结构与联合|问题2(1)

📅  最后修改于: 2023-12-03 14:59:38.702000             🧑  作者: Mango

C | 结构与联合 | 问题2

在C语言中,结构和联合是两种不同的复合数据类型。结构定义了一组相关的成员变量,而联合同样也定义了一组成员变量,但是这些变量共用同一块内存空间。在本文中,我们将讨论关于C语言结构和联合的使用问题2。

问题描述

定义一个结构体Student,包含三个成员属性:

  • 学号ID:整型
  • 姓名name:字符串,长度不超过20个字符
  • 成绩grade:整型

要求从键盘输入n个学生信息并保存在结构体数组中,输出每个学生的信息。

解决方法
定义结构体

首先,我们需要定义一个结构体类型,可以通过如下代码实现:

struct Student {
    int ID;
    char name[20];
    int grade;
};
输入学生信息

接下来,我们需要从键盘输入n个学生信息。可以通过以下代码实现:

int n;
printf("Please input the number of students:\n");
scanf("%d", &n);
struct Student students[n];
for (int i = 0; i < n; i++) {
    printf("Please input the information of Student %d:\n", i + 1);
    printf("ID:\n");
    scanf("%d", &students[i].ID);
    printf("name:\n");
    scanf("%s", students[i].name);
    printf("grade:\n");
    scanf("%d", &students[i].grade);
}
输出学生信息

接下来,我们可以使用如下代码输出每个学生的信息:

for (int i = 0; i < n; i++) {
    printf("Student %d: ID=%d, name=%s, grade=%d\n", i + 1, students[i].ID, students[i].name, students[i].grade);
}
完整代码

最终,我们的完整代码如下:

#include<stdio.h>

struct Student {
    int ID;
    char name[20];
    int grade;
};

int main() {
    int n;
    printf("Please input the number of students:\n");
    scanf("%d", &n);
    struct Student students[n];
    for (int i = 0; i < n; i++) {
        printf("Please input the information of Student %d:\n", i + 1);
        printf("ID:\n");
        scanf("%d", &students[i].ID);
        printf("name:\n");
        scanf("%s", students[i].name);
        printf("grade:\n");
        scanf("%d", &students[i].grade);
    }
    for (int i = 0; i < n; i++) {
        printf("Student %d: ID=%d, name=%s, grade=%d\n", i + 1, students[i].ID, students[i].name, students[i].grade);
    }
    return 0;
}

上述代码中,我们定义了一个结构体类型Student,并使用scanf从键盘输入学生信息,最后使用printf输出学生信息。