学校全体员工分为教师和行政人员两类。教师的数据包括:编号,姓名,职业(t),职称(教授professor,副教授associate professor,讲师lecturer等);行政人员的数据包括:编号,姓名,职业(w),部门号(100,200,300等)。要求输入若干人员的数据并能输出他们的资料,同时统计教师(tcount)和行政人员(wcount)的数量。使用动态内存分配函数实现。
输入格式:
输入第一行给出正整数n,随后给出n个员工的信息。
输出格式:
输出指定数量的员工信息,并在最后一行输出教师和行政人员的数量。
输入样例:
5
10000 jack t professor
20000 rose t associate professor
30000 mike w 100
40000 robin w 200
50000 lina t lecturer
输出样例:
10000 jack t professor
20000 rose t associate professor
30000 mike w 100
40000 robin w 200
50000 lina t lecturer
tcount = 3, wcount = 2
#include<stdio.h>
struct t
{
char z[50];
};
struct w
{
int n;
};
struct stu
{
long int num;
char name[20];
char c;
union
{
struct t a;
struct w b;
}people;
}a[40];
main()
{ char c;
int n,i,k=0,y=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%ld %s %c",&a[i].num,a[i].name,&a[i].c);
if(a[i].c=='t')
{ y++;
c=getchar();
gets(a[i].people.a.z);
}
else{
k++;
c=getchar();
scanf("%d",&a[i].people.b.n);
}
}
for(i=0;i<n;i++)
{
if(a[i].c=='t')
printf("%ld %s %c %s\n",a[i].num,a[i].name,a[i].c,a[i].people.a.z);
else
printf("%ld %s %c %d\n",a[i].num,a[i].name,a[i].c,a[i].people.b.n);
}
printf("tcount = %d, wcount = %d",y,k);
}