数据结构 day-day2作业

有若干个学校人员的信息,包括学生和教师。其中学生的数据包括:姓名、性别、职业s/S、分数。教师的数据包括:姓名、性别、职业t/T、职务。要求用同一个表格来处理以上数据

1,定义函数在堆区申请空间n

struct B *p= (struct B * )malloc(sizeof(struct B)* n );

2,定义函数实现录入学校人员信息

在输入分数或者职务是,需要判断职业。

3,定义函数输出学校人员信息

4,定义函数计算学生平均成绩

5,定义函数计算老师的个数

6,释放存储空间

#include<stdio.h>
#include<stdlib.h>
typedef  union A
{
int score;
char position[20];
}a;


typedef struct B
{
char name[20];
char sex;
char job;
a message;
}b;


b *create(int n)
{
b *p=(b *)malloc(sizeof(b)*n);
if(p==NULL)
return NULL;
else
return p;
}


void input(b *p,int n)
{
for(int i=0;i<n;i++)
{
printf("输入姓名:\n");
scanf("%s",(p+i)->name);
printf("输入性别:\n");
scanf(" %c",&(p+i)->sex);
printf("输入职业:\n");
scanf(" %c",&(p+i)->job);
if((p+i)->job=='T')
{
printf("输入职务:\n");
scanf("%s",(p+i)->message.position);
}
if((p+i)->job=='S')
{
printf("输入成绩:\n");
scanf("%d",&(p+i)->message.score);
}
}
}


void output(b *p,int n)
{
for(int i=0;i<n;i++)
{
if((p+i)->job=='T')
printf("姓名:%s 性别:%c 职业;%c 职务:%s\n",(p+i)->name,(p+i)->sex,(p+i)->job,(p+i)->message.position);
if((p+i)->job=='S')
printf("姓名:%s 性别:%c 职业:%c 成绩:%d\n",(p+i)->name,(p+i)->sex,(p+i)->job,(p+i)->message.score);
}
}

float Average(b *p,int n)
{
int j=0;
int sum=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='S')
{
sum+=(p+i)->message.score;
j++;
}
}
if(j==0)
return 0 ;
float average=(float)sum/j; 
return average;

}

int teacher_number(b *p,int n)
{
int num=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='T')
num++;
}
return num;
}
int main(int argc,char*argv[])
{
    int n;
    printf("输入申请空间个数:\n");
    scanf("%d",&n);
    struct B *p=NULL;
    p=create(n);
    input(p,n);
    output(p,n);
    float average=Average(p,n);
    printf("学生平均值为:%f\n",average);
    int num=teacher_number(p,n);
    printf("教师数量为:%d\n",num);
    free(p);
    p=NULL;
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值