代码:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 20
struct student
{
char name[20]; //姓名
char id; //身份 S表示学生 T表示老师
union
{
double score; //分数
char subject[10]; //课程
};
};
//定义班级结构体
struct class
{
struct student s[MAX]; //学生数组
int count; //表示当前班级的人数
}c;
int main(int argc, const char *argv[])
{
struct class *p=(struct class *)malloc(sizeof(struct class)*20); //给班级申请空间
int a=0;
int b=0;
int flag=1;
int i=0;
while(flag==1)
{
printf("请选择教师端录入或者学生端录入,学生端录入请按s,教师端录入请按t>>>>>\n");
scanf("%s",&(c.s[i].id));
if(strcmp(&(c.s[i].id),"s")==0)
{
printf("开始录入学生信息\n");
while(1)
{
printf("请输入学生姓名>>>\n");
scanf("%s",(c.s[i].name));
printf("请输入学生分数>>>\n");
scanf("%lf",&(c.s[i].score));
c.count++;
i++;
printf("该学生信息已录入完毕,若继续录入请按1,终止录入请按0\n");
scanf("%d",&a);
if(a==0)
{
break;
}
}
}
if(strcmp(&(c.s[i].id),"t")==0)
{
i=c.count;
printf("开始录入教师信息\n");
while(1)
{
printf("请输入教师姓名>>>\n");
scanf("%s",(c.s[i].name));
printf("请输入教师所教学的课程>>>\n");
scanf("%s",(c.s[i].subject));
c.count++;
i++;
printf("该教师的信息已经录入完毕,若继续录入请按1,终止录入请按0\n");
scanf("%d",&b);
if(b==0)
{
break;
}
}
}
printf("请选择是否继续录入,继续录入请按1,终止录入请按0\n");
scanf("%d",&flag);
if(0==flag)
{
break;
}
}
//计算按当前班级人数=学生数量+教师数量
printf("当前已经录入系统中的教师和学生数量共计%d位\n",c.count);
//显示输入到系统的学生和教师信息
for(int j=0;j<c.count;j++)
{
if(strcmp(&(c.s[j].id),"s")==0)
{
printf("学生姓名:%s 学生成绩:%lf\n",c.s[j].name,c.s[j].score);
}
else if(strcmp(&(c.s[j].id),"t")==0)
{
printf("教师姓名:%s 教师课程:%s\n",c.s[j].name,c.s[j].subject);
}
}
return 0;
}
效果: