结构体输入输出学校信息
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char name[20];
char sex;
char job;
union
{
float score;
char position[20];
};
}PerTypedef;
PerTypedef *create(int n)
{
PerTypedef *p= (PerTypedef *)malloc(sizeof(PerTypedef)*n);
if(p==NULL)
{
return NULL;
}
return p;
}
int input(PerTypedef *p,int n,int *sum)
{
int S_sum=0;
for(int i=0;i<n;i++)
{
printf("请输入姓名:");
scanf(" %s",(p+i)->name);
printf("请输入性别:");
scanf(" %c",&(p+i)->sex);
printf("请输入身份:");
scanf("%s",&(p+i)->job);
if((p+i)->job=='T')
{
printf("请输入教授科目:");
scanf(" %s",(p+i)->position);
}else
{
printf("请输入分数:");
scanf(" %f",&(p+i)->score);
S_sum++;
*sum+=(p+i)->score;
}
}
return S_sum;
}
void output(PerTypedef *p,int n)
{
printf("姓名\t性别\t身份\t科目/成绩\n");
for(int i=0;i<n;i++)
{
printf("%s\t%c\t%c\t",(p+i)->name,(p+i)->sex,(p+i)->job);
if((p+i)->job=='T')
{
printf("%s\n",(p+i)->position);
}else
{
printf("%f\n",(p+i)->score);
}
}
}
int main()
{
int j,i,n,*sum,S_sum;
float average;
n=3;*sum=0;
PerTypedef *p=create(n);
S_sum=input(p,n,sum);
output(p,n);
average=*sum/S_sum;
printf("全校学生分数的平均值:%f\n",average);
printf("全校老师的数量:%d\n",n-S_sum);
}