#include <stdio.h>
#include <stdlib.h>  // 包含malloc和free

// 定义一个学生结构体
struct Student {
    char name[50];  // 存储姓名
    int age;        // 存储年龄
};

int main() {
    int num_students;  // 存储学生的数量
    printf("请输入学生数量: ");
    scanf("%d", &num_students);  // 输入学生数量

    // 使用malloc动态分配内存
    struct Student *students = (struct Student *)malloc(num_students * sizeof(struct Student));
    
    // 检查内存分配是否成功
    if (students == NULL) {
        printf("内存分配失败！\n");
        return 1;
    }

    // 输入每个学生的信息
    for (int i = 0; i < num_students; i++) {
        printf("\n请输入第 %d 位学生的姓名: ", i + 1);
        scanf("%s", students[i].name);  // 输入学生姓名
        printf("请输入第 %d 位学生的年龄: ", i + 1);
        scanf("%d", &students[i].age);  // 输入学生年龄
    }

    // 输出所有学生的信息
    printf("\n学生信息如下：\n");
    for (int i = 0; i < num_students; i++) {
        printf("学生 %d: 姓名 - %s, 年龄 - %d\n", i + 1, students[i].name, students[i].age);
    }

    // 释放分配的内存
    free(students);

    return 0;
}