<C语言>结构体里包含共用体实例--输入输出数据

来源:互联网 发布:如何设置淘宝客推广 编辑:程序博客网 时间:2024/06/10 16:37

结构体里面包含共用体,能很好的解决输出的时候有两种情况的难题,有详细注释,不过多赘述。

题目:打印如图所示的表格:


当某人为的职业为学生‘s’时,score/course项要为score;当某人为的职业为教师‘t’时,score/course项要为course。


代码:

//<<<<<<<<结构体里包含共用体实例--输入输出数据>>>>>>>>>//wsg//时间:2017年8月15日//运用联合体中只能有一个成员有效#include <stdio.h>#define TOTEL 4  //定义了输入多少个人的数据,这里为4个人struct     //定义结构体{char name[20];  //姓名int num;    //编号char sex;   //性别char profession;  //职业union   //定义联合体{float score;   //学生的成绩char course[20];  //教室所教课程}sc;}body[TOTEL];  //结构体数组int main(void){int i;for(i=0; i<TOTEL; i++) //使用for循环,一个一个输入,循环输入四个人的数据{printf("Please input Name Num Sex(f or m) Profession(s or t):\n");//对应输入的是:某一个人的姓名,编号,性别,职业(以空格隔开)scanf("%s %d %c %c", body[i].name, &body[i].num, &body[i].sex, &body[i].profession);//当输入的职业(profession)为's'的时候, 就输入学生的成绩,而不是教师所教的课程if(body[i].profession == 's') {scanf("%f", &body[i].sc.score);}//相反,当输入的职业为't'的时候,就输入教师所教的课程,而不是学生的成绩else if(body[i].profession == 't'){scanf("%s", body[i].sc.course);}//如果职业既不是's'也不是't',那就是输入错误else{printf("EROOR!\n");break;}}//同样,根据职业的不同,分别判断打印printf("\n输出结果为:\n");printf("Name\t Num\t Sex\t Profession\t Score/Course\n"); for(i=0; i<TOTEL; i++){printf("%s\t %d\t %c\t %c\t\t ", body[i].name, body[i].num, body[i].sex, body[i].profession);if(body[i].profession == 's'){printf("%.1f\n", body[i].sc.score);}else if(body[i].profession == 't'){printf("%s\n", body[i].sc.course);}else{break;}}return 0;}

示意图:


原创粉丝点击