#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct node{
int num;
char name[10];
char sex;
char job;
union {
int classes;
char position[10];
}category;
};
int main(){
node s[100]={};
node* t;
t=s;
int n=0;
cin>>n;
for(int i=0;i<n;i++){
int _num;
char _name[10];
char _sex;;
char _job;
int _classes;
char _position[10];
cin>>_num;scanf("%s",_name);cin>>_sex>>_job;
char *temp1;
temp1=&_job;
if(strcmp(temp1,"s")==0){
cin>>_classes;
(*(t+i)).category.classes=_classes;
}else{
scanf("%s",_position);
strcpy((*(t+i)).category.position,_position);
}
(t+i)->num=_num;
strcpy((t+i)->name,_name);
(t+i)->sex=_sex;
(t+i)->job=_job;
}
for(int j=0;j<n;j++){
cout<<(t+j)->num<<' '<<(t+j)->name<<' '<<(t+j)->sex<<' '<<(t+j)->job<<' ';
char *temp2;
temp2=&((t+j)->job);
if(strcmp(temp2,"s")==0){
cout<<(*(t+j)).category.classes<<endl;
}else{
cout<<(*(t+j)).category.position<<endl;
}
}
cin.get();
return 0;
}
联合体的大小是联合体中的最大元素所占用的空间大小而不是所有的元素合起来的大小
联合体在结构体中的用法(用小数点而不能用->表示联合体中的元素);可以直接将单个字符传递给另一个char变量,而不用strcpy
最新推荐文章于 2024-05-16 03:06:11 发布