题目:定义一个班级结构体,属性:学生数组,总人数。学生类型包括姓名、身份、分数、课程,课程和分数共享同一段内存,如果该成员是老师,则使用课程属性,如果是学生,则使用分数属性。完成对班级人员的信息输入、输出,求所有学生的总成绩。
#include <stdio.h>
#include <string.h>
#define MAX 20
struct Student
{
char name[20];
char id[2]; //S代表学生,t代表老师
union
{
float score;
char subject[20];
};
};
struct Class
{
struct Student s[MAX];
int count;
};
int main(int argc, const char *argv[])
{
struct Class c1;
int i,j;
int count2=0;
char apple[2];
float sum=0,average=0;
c1.count=0;
for(i=0;i<MAX;i++)
{
printf("请输入姓名\n");
scanf("%s",c1.s[i].name);
printf("请输入身份(t为老师,s为学生)\n");
scanf("%s",c1.s[i].id);
if(strcmp(c1.s[i].id,"s")==0)
{
printf("请输入分数");
scanf("%f",&c1.s[i].score);
}
else if(strcmp(c1.s[i].id,"t")==0)
{
printf("请输入所带课程");
scanf("%s",c1.s[i].subject);
}
c1.count++;
printf("是否继续输入(y/n)\n");
scanf("%s",apple);
if(strcmp(apple,"n")==0)
{
break;
}
};
for(i=0;i<c1.count;i++)
{
if(strcmp(c1.s[i].id,"s")==0)
{
sum+=c1.s[i].score;
count2++;
}
}
average=(sum/count2);
printf("所有学生平均分为%f\n",average);
return 0;
}