c语言试题描述 请你设计一个结构体类型,用于管理学生基本资料。学生基本资料包括如下成员: 1)学号,int 范围内的正整数。 2)姓名(不含空白符的字符串),不超过19个字符。 3)性别,char类型,依据值的不同,代表男或女(“M”代表男,‘F’代表女)。 4)年龄,int 范围内的正整数。 在主函数中,定义含有50个成员的结构体数组,手工输入N和N个学生的基本资料,并存储在结构体数组中。请你找出其中年龄大于等于20岁的学生,按照输入的次序输出其学号和姓名。 输入输入包含 N+1行: 第一行是正整数 N(1<=N<=50)。 第二行到第N+1行,每行均为某个学生的基本资料,每行四项数据,邻近两项用一个空格隔开。四项数据如下: 1)学号,int 范围内的正整数。 2)姓名(不含空白符的字符串),不超过19个字符。 3)性别,char类型,依据值的不同,代表男或女(M”代表男,F”代表女)。 4)年龄,int 范围内的正整数。 输出 输出若干行,为年龄大于等于20岁的学生的核心信息。每个学生核心信息占一行,核心信息是学号和姓名,用一个空格隔开。 输入示例 3 1 zhangsan M 21 2 lisi F 19 3 wangwu F 20 输出示例 l zhangsan 3 wangwu 数据范围 输入输出均为 int范围内的整数和字符串
时间: 2024-01-22 20:21:33 浏览: 77
以下是该题的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 50
#define MAX_NAME_LEN 20
struct Student {
int id;
char name[MAX_NAME_LEN];
char gender;
int age;
};
int main() {
int n;
scanf("%d", &n);
struct Student students[MAX_N];
// 读入学生信息
for (int i = 0; i < n; i++) {
scanf("%d%s %c%d", &students[i].id, students[i].name, &students[i].gender, &students[i].age);
}
// 输出年龄大于等于20岁的学生信息
for (int i = 0; i < n; i++) {
if (students[i].age >= 20) {
printf("%d %s\n", students[i].id, students[i].name);
}
}
return 0;
}
```
这里使用了一个结构体类型 `Student` 来管理学生基本资料,其中包括学号、姓名、性别和年龄四个成员。
在主函数中,首先读入学生数量 `n`,然后定义了一个含有50个成员的结构体数组 `students`,并手工输入每个学生的基本资料,最后找出其中年龄大于等于20岁的学生,并按照输入的次序输出其学号和姓名。
需要注意的是,输入时需要使用 `%s` 格式化字符串读入姓名,而在结构体中定义 `name` 成员时需要指定其最大长度为 `MAX_NAME_LEN`。此外,输出时需要使用 `%c` 格式化字符读入性别。
阅读全文