📄 例11.12.txt
字号:
例11.12
设有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、图11.25号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现要求把它们放在同一表格中,见图11.25。如果“job”项为“s”(学生),则第5项为class(班)。即Li是501班的。如果“job”项是“t”(教师),则第5项为position(职务)。Wang是prof(教授)。显然对第5项可以用共用体来处理(将calss和position放在同一段内存中)。
要求输入人员的数据,然后再输出。可以写出下面的算法(见图11.26)。按此写出程序。为简化起见。只设两个人(一个学生、一个教师)。
struct
{int num;
char name[10];
char sex;
char job;
union
{int class;
char position[10];
}category;
}person[2];
main()
{int n,i;
for(i=0,i<2;i++)
{scanf("%d %s %c %c",&person[i].num, person[i].name,&person[i].sex,&person[i].job);
if(person[i].job=='s') scanf("%d", &person[i].category.class);
else if (person[i].job=='t') scanf("%s",person[i].category.position);
else printf("input error!");
}
printf("\n");
printf("No. Namesex job class/position\n");
for(i=0;i<2;i++)
{if(person[i].job=='s')
printf("%\|6d %\|10s %\|3c %\|3c %\|6d\n", person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.class);
else
printf("%\|6d %\|10s %\|3c %\|3c %\|6s\n", person[i].num, person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
}
运行情况如下:
101 Li f s 501
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -