#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char name[20];
char sex;
char job;
union
{
float score;
char position[20];
};
}A;
//*****************
A* space(int n)
{
A *p=(A* )malloc(sizeof(A)*n);
if(p==NULL)
{
return NULL;
}
return p;
}
//******************
void intput(A* p,int n)
{
for(int i=0;i<n;i++)
{
printf("姓名\t");
scanf("%s",(p+i)->name);
printf("性别\t");
scanf(" %c",&((p+i)->sex));
printf("职业\t");
scanf(" %c",&((p+i)->job));
if((p+i)->job=='s')
{
printf("成绩\t");
scanf("%f",&((p+i)->score));
}
else
{
printf("职务\t");
scanf("%s",(p+i)->position);
}
}
}
//****************
float ave(A* p,int n)
{
int s=0,s1=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='s')
{
s=s+(p+i)->score;
s1++;
}
}
return s/s1;
}
//******************
int ge(A* p,int n)
{
int t=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='t')
{
t++;
}
}
return t;
}
//******************
int main(int argc, const char *argv[])
{
int n;
printf("请输入登记人员总数\n");
scanf("%d",&n);
A *p=space(n);
intput(p,n);
printf("平均成绩=%f\n",ave(p,n));
printf("老师人数=%d\n",ge(p,n));
free(p);
p=NULL;
return 0;
}
运行演示