写作业写蒙了,不导入笔记了,有道云看吧
作业:有若干个学校人员的信息,包括学生和教师。其中学生的数据包括:姓名、性别、职业s/S、分数。教师的数据包括:姓名、性别、职业t/T、职务。要求用同一个表格来处理以上数据。
typedef struct
{
char name[20];
char sex;
char job;
union
{
float score;
char position[20];
};
}B;
1,定义函数在堆区申请空间n
B *p= (struct B * )malloc(sizeof(struct B)* n );
2,定义函数实现录入学校人员信息
在输入分数或者职务是,需要判断职业。
3,定义函数输出学校人员信息
4,定义函数计算学生平均成绩
5,定义函数计算老师的个数
6,释放存储空间
#include <string.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 input(A *p,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入姓名:");
scanf("%s",(p+i)->name);
printf("请输入性别(W or M):");
scanf("%s",&(p+i)->sex);
printf("请输入职业:");
scanf("%s",&(p+i)->job);
if((p+i)->job == 's'||(p+i)->job =='S')
{
printf("请输入学生的分数:");
scanf("%f",&(p+i)->score);
}
else if((p+i)->job == 't'||(p+i)->job =='T')
{
printf("请输入教师的职位:");
scanf("%s",(p+i)->position);
}
}
}
void output(A *p,int n)
{
printf("姓名\t性别\t职业\t分数or职位\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 == 's'||(p+i)->job =='S')
{
printf("%.2f\n",(p+i)->score);
}
else if((p+i)->job == 't'||(p+i)->job =='T')
{
printf("%s\n",(p+i)->position);
}
}
}
float ave(A *p,int n)
{
int i;
int j=0;
float ave = 0;
for(i=0;i<n;i++)
{
if((p+i)->job == 's'||(p+i)->job =='S')
{
ave +=(p+i)->score;
j++;
}
}
return ave/(float) j;
}
int teasum(A *p,int n)
{
int i,j=0;
for(i=0;i<n;i++)
{
if((p+i)->job == 't'||(p+i)->job =='T')
{
j++;
}
}
return j;
}
int main(int argc, const char *argv[])
{
int n;
printf("请输入要输入人员信息的人数:");
scanf("%d",&n);
printf("\n");
A *p =space(n);
input(p,n);
output(p,n);
float ave_s = ave(p,5);
printf("学生的平均成绩为:%.2f\n",ave_s);
int teachersum = teasum(p,5);
printf("老师的个数为:%d\n",teachersum);
free(p);
p = NULL;
return 0;
}