建立一个简单的结构体,其中姓名、职位(1代表老师、2代表学生)、还有一个共用体(老师为所教科目、学生为学号)。要求输入一个人的信息并按照示例输出
时间: 2024-09-23 20:01:02 浏览: 36
谭浩强版 C语言 结构体 共用体
在C语言中,你可以创建一个结构体(struct)来存储个人信息,结合枚举(enum)表示职位以及联合体(union)来分别处理教师和学生的特性。下面是一个简单的例子:
```c
#include <stdio.h>
// 定义职位枚举
enum Position {
TEACHER = 1,
STUDENT = 2
};
// 定义共用体,包含特定于职位的数据
union PersonInfo {
struct {
char name[50]; // 姓名
int subject; // 老师的专业或学生的学号
} student_or_teacher;
struct {
char name[50];
char* teacher_subject; // 老师的授课科目
} teacher;
};
typedef struct {
char name[50];
enum Position position;
union PersonInfo info;
} Person;
// 输入函数
void input(Person p) {
printf("请输入姓名:");
fgets(p.name, sizeof(p.name), stdin);
if (p.position == TEACHER) {
printf("请输入老师的专业:");
scanf("%d", &p.info.teacher.subject);
printf("请输入老师的科目:");
scanf("%s", p.info.teacher.teacher_subject);
} else {
printf("请输入学生的学号:");
scanf("%d", &p.info.student_or_teacher.subject);
}
}
// 输出函数
void output(const Person p) {
printf("姓名:%s\n", p.name);
if (p.position == TEACHER) {
printf("职位:%s,专业:%s\n", "老师", p.info.teacher.teacher_subject);
} else {
printf("职位:%s,学号:%d\n", "学生", p.info.student_or_teacher.subject);
}
}
int main() {
Person user;
input(user);
output(user);
return 0;
}
```
当你运行这个程序时,会提示用户输入姓名、职位(如果为老师则还需要输入专业和科目),然后根据职位显示相应的信息。
阅读全文