输入姓名、性别、根据输入的职务将往下的信息存入到联合体中。
#include<stdio.h>
#include<string.h>
struct pessonst{
char name[10];
char sex[10];
char job[10];
union{
int clas;
char positionTeachers[50];
}category;
}person[2];
enum position{assistant=1,lecturer=2,associate_professor=3,professo=4,pNumber};
enum clas{one=1,two=2,three=3,four=4,cNumber};
enum sexs{man=1,woman=2,sNmuber};
int main(){
int i;
void InputEditStr();
InputEditStr();
printf("\n");
printf("name sex job class/position\n");
for(i=0;i<2;i++){
if(strcmp(person[i].job,"s")==0){
printf("%-8s%-6s%-6s%-10d\n",person[i].name,person[i].sex,
person[i].job,person[i].category.clas);
}else{
printf("%-8s%-6s%-6s%-10s\n",person[i].name,
person[i].sex,person[i].job,person[i].category.positionTeachers);
}
}
return 0;
}
void InputEditStr(){
struct pessonst *pes;
pes=person;
int i,numb,posit,inputSex;
char *posiT=NULL;
for(i=0;i<2;i++){
char inputSexStr[10],*dh;
dh = inputSexStr;
printf("Enter name、sex、job、class/position%d:\n",i+1);
scanf("%s%s%s",person[i].name,dh,person[i].job);
if(strcmp(inputSexStr,"man")){
inputSex=man;
dh="男";
}else if(strcmp(inputSexStr,"woman")){
inputSex=woman;
dh="女";
}else{
printf("Input error!\n");
break;
}
strcpy(pes[i].sex,inputSexStr);
if(strcmp(person[i].job,"s")==0){
scanf("%d",&numb);
if(numb>=1&&numb<cNumber){
pes[i].category.clas=numb;
}else{
printf("Enter error!\n");
break;
}
}else if(strcmp(person[i].job,"t")==0){
scanf("%d",&posit);
if(posit>=1&&posit<pNumber){
switch (posit) {
case 1:
posiT="assistant";
break;
case 2:
posiT="lecturer";
break;
case 3:
posiT="associate_professor";
break;
case 4:
posiT="professo";
break;
default:
break;
}
}
strcpy(pes[i].category.positionTeachers,posiT);
}else{
printf("Inpput error!\n");
}
}
}
运行结果:
