5.设有一个教师和学生通用的表格,教师的数据有姓名,年龄,职业,教研室四项;学生的数据有姓名,年龄,专业,班级四项;编程输入人员的数据,再以表格输出,使用c语言
时间: 2024-09-25 18:15:34 浏览: 41
在C语言中,你可以使用结构体(struct)来表示教师、学生和输入人员这三种类型的实体,并创建一个联合数组来存储他们的信息。首先,定义相应的结构体:
```c
#include <stdio.h>
#include <string.h>
// 定义教师和学生的基本结构体
typedef struct {
char name[50];
int age;
char profession[50]; // 教师的职业是教授
char office[50]; // 教研室名称
} Teacher;
typedef struct {
char name[50];
int age;
char major[50]; // 学生的专业
char class_id[50]; // 班级编号
} Student;
// 输入人员结构体,假设这里没有具体的字段,只是一个占位
typedef struct {
char input_data[50];
} InputPerson;
// 创建联合数组,用union统一所有类型的结构体
union UserData {
Teacher teacher;
Student student;
InputPerson input;
};
int main() {
union UserData data[100]; // 根据实际需要调整大小
// 输入功能,示例函数,根据不同情况选择填充哪种类型
void setInputType(char type) {
switch (type) {
case 'T':
printf("请输入教师信息: ");
scanf("%s %d %s %s", data[type].teacher.name, &data[type].teacher.age,
data[type].teacher.profession, data[type].teacher.office);
break;
case 'S':
printf("请输入学生信息: ");
scanf("%s %d %s %s", data[type].student.name, &data[type].student.age,
data[type].student.major, data[type].student.class_id);
break;
case 'I':
printf("请输入输入人员信息: ");
scanf("%s", data[type].input.input_data);
break;
default:
printf("无效的输入类型");
}
}
// 输出部分,这里仅作演示,实际需要根据具体需求编写
void printUserData(union UserData user) {
switch (user.input.type) { // 假设每个输入都有一个type字段区分
case 'T':
printf("姓名: %s, 年龄: %d, 职业: %s, 教研室: %s\n",
user.teacher.name, user.teacher.age,
user.teacher.profession, user.teacher.office);
break;
case 'S':
printf("姓名: %s, 年龄: %d, 专业: %s, 班级: %s\n",
user.student.name, user.student.age,
user.student.major, user.student.class_id);
break;
case 'I':
printf("输入信息: %s\n", user.input.input_data);
break;
}
}
// 示例:用户选择要输入的类型
char userType;
printf("请选择要输入的信息类型(T for Teacher, S for Student, I for InputPerson): ");
scanf(" %c", &userType);
setInputType(userType);
printUserData(data[userType]);
return 0;
}
```
阅读全文