设有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求输入人员的数据,然后再输出。用C语言共用体与结构体
时间: 2023-07-31 18:12:23 浏览: 334
C语言数据结构大作业,C语言学生管理系统源码,实现教师、学生、管理员多个角色
5星 · 资源好评率100%
可以使用结构体来表示学生和教师的数据,同时可以使用共用体将学生和教师的数据合并在一起。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_NUM_LENGTH 20
// 定义职业枚举类型
typedef enum {
STUDENT,
TEACHER
} Profession;
// 定义学生结构体
typedef struct {
char name[MAX_NAME_LENGTH];
char num[MAX_NUM_LENGTH];
char gender;
Profession profession;
char grade[MAX_NUM_LENGTH];
} Student;
// 定义教师结构体
typedef struct {
char name[MAX_NAME_LENGTH];
char num[MAX_NUM_LENGTH];
char gender;
Profession profession;
char position[MAX_NAME_LENGTH];
} Teacher;
// 定义共用体
typedef union {
Student student;
Teacher teacher;
} Person;
int main() {
int n;
printf("请输入人员数量:");
scanf("%d", &n);
// 定义人员数组
Person people[n];
// 输入人员数据
for (int i = 0; i < n; i++) {
printf("请输入第%d个人员的数据:\n", i + 1);
printf("姓名:");
scanf("%s", people[i].student.name);
printf("号码:");
scanf("%s", people[i].student.num);
printf("性别:");
scanf(" %c", &people[i].student.gender);
printf("职业(0表示学生,1表示教师):");
scanf("%d", &people[i].student.profession);
if (people[i].student.profession == STUDENT) {
printf("班级:");
scanf("%s", people[i].student.grade);
} else {
printf("职务:");
scanf("%s", people[i].teacher.position);
}
}
// 输出人员数据
for (int i = 0; i < n; i++) {
printf("第%d个人员的数据:\n", i + 1);
printf("姓名:%s\n", people[i].student.name);
printf("号码:%s\n", people[i].student.num);
printf("性别:%c\n", people[i].student.gender);
printf("职业:%s\n", (people[i].student.profession == STUDENT) ? "学生" : "教师");
if (people[i].student.profession == STUDENT) {
printf("班级:%s\n", people[i].student.grade);
} else {
printf("职务:%s\n", people[i].teacher.position);
}
}
return 0;
}
```
示例输出:
```
请输入人员数量:3
请输入第1个人员的数据:
姓名:张三
号码:001
性别:M
职业(0表示学生,1表示教师):0
班级:1班
请输入第2个人员的数据:
姓名:李四
号码:002
性别:F
职业(0表示学生,1表示教师):1
职务:教授
请输入第3个人员的数据:
姓名:王五
号码:003
性别:M
职业(0表示学生,1表示教师):0
班级:2班
第1个人员的数据:
姓名:张三
号码:001
性别:M
职业:学生
班级:1班
第2个人员的数据:
姓名:李四
号码:002
性别:F
职业:教师
职务:教授
第3个人员的数据:
姓名:王五
号码:003
性别:M
职业:学生
班级:2班
```
阅读全文