<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;}
示意图:
阅读全文
1 0
- <C语言>结构体里包含共用体实例--输入输出数据
- C语言枚举、结构体、共用体综合应用实例
- C语言结构体与共用体
- C语言结构体与共用体
- C语言结构体 共用体0815
- C语言 结构体与共用体
- C语言结构、共用体、Typedef
- C语言:共用体
- C语言--共用体
- C语言:共用体
- C语言-共用体
- C语言共用体
- C语言:共用体
- C语言的共用体在Delphi里表示
- C语言学习第十一讲-结构体,共用体
- C语言构造数据类型之结构体、共用体、枚举
- C语言中结构体与共用体(一)
- C语言中结构体与共用体(二)
- Spring AOP无法拦截Controller中的方法
- 透明状态栏的实现
- c#使用SMTPClient发送邮箱
- aop
- mac下安装boost
- <C语言>结构体里包含共用体实例--输入输出数据
- HashMap和ConcurrentHashMap
- 异常:java.security.InvalidKeyException: Illegal key size
- RxJava 链式调用流程源码记录分析(以map()为例)
- 动态规划☞背包问题(⊙o⊙)…
- iOS label加载html富文本内容
- LabVIEW 学习_04_数据类型
- 传输层TCP和UDP的区别分析与应用场景
- 用正则表达式替换文章中的文字 js