文档章节

2.8节 union 11.4

Cinzano
 Cinzano
发布于 2017/05/13 16:38
字数 611
阅读 26
收藏 0

 C语言11.4

时间限制: 1 Sec  内存限制: 32 MB

题目描述

设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:
struct {
    int num;
    char name[10];
    char sex;
    char job;
    union {
        int clas;
        char position[10];
    }category;
};
在以上的结构体中,如果job项为s(学生),则第5项为clas(班级);如果job项是t(教师),则第5项为position(职务)。
输入几个人员的数据,将其保存在以上包含共用体的结构体数组中,并输出。

输入

第一行有一个整数n,表示以下n行分别表示n个人员的数据。保证n不超过100。
之后的n行,每行有5项用空格隔开的内容。前4项分别为人员的号码(整数)、姓名(长度不超过9的无空格字符串)、性别(字符,m或f)和职业(字符,s或t)。如果第4项是s,则第5项为一个整数,表示班级;如果第4项是t,则第5项为一个长度不超过9的无空格字符串,表示职务。

输出

共有n行,与输入格式相同,输出读入的所有内容。
请注意行尾输出换行。

样例输入

2
101 Li f s 501
102 Wang m t prof

样例输出

101 Li f s 501
102 Wang m t prof

Code:

#include<stdio.h>
struct person {
	int num;
	char name[10];
	char sex;
	char job;
	union {
	    int clas;//here class definited clas,因为class是标识符类
	    char position[10];
	}category;
}data[100];

int main(){
	
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d %s %c %c",&data[i].num,data[i].name,&data[i].sex,&data[i].job);
		if(data[i].job=='s')
		scanf("%d",&data[i].category.clas);
		else if(data[i].job=='t')
		scanf("%s",data[i].category.position);
		else printf("Error!\n");
	}
	for(int i=0;i<n;i++){
		if(data[i].job=='s')
		printf("%d %s %c %c %d\n",data[i].num,data[i].name,data[i].sex,data[i].job,data[i].category.clas);
		else 
		printf("%d %s %c %c %s\n",data[i].num,data[i].name,data[i].sex,data[i].job,data[i].category.position);
	}
	return 0;
}

 

© 著作权归作者所有

共有 人打赏支持
Cinzano
粉丝 0
博文 19
码字总数 6205
作品 0
合肥
其他
私信 提问
使用readelf/objdump查看dwaf调试信息

对源文件进行编译链接,生成.o文件。 使用 查看包含的调试信息。 这时会出现很多信息: 接着使用 查看各个调试信息节包含的内容。 *是调试节名的第一个字母,如就是查看节的内容,就是查看节...

zhang_han666
2018/05/10
0
0
openSUSE 11.4发布

openSUSE 11.4 Released openSUSE 11.4发布 posted by superstoned on Fri 11th Mar 2011 23:25 UTC 发表于:2011-3-11 23:25 UTC openSUSE 11.4 is out and is not only the first major li......

xyxzfj
2011/03/12
13
0
openSUSE 11.4 现已正式停止维护,再见了!

openSUSE 11.4 的生命终于走到了尽头。 openSUSE 11.4 的官方支持在2012年11月就已经结束,但是得益于社区的努力,其生命周期得到了延长。在官方支持结束后,社区通过集成补丁和修复漏洞延长...

oschina
2014/09/29
4.9K
19
Oracle Solaris 11.4 GA 版发布,这将是 Solaris 的绝唱

美国当地时间8月28日,Oracle 正式宣布推出 Oracle Solaris 11.4 GA 稳定版,距离上个版本 11.3 的发布已过去近三年。Oracle 的产品管理总监 Scott Lynn 表示,在他参与开发的四个 Oracle S...

局长
2018/08/30
6.5K
24
Oracle Solaris 11.4 的首个更新 11.4 SRU1 发布

Oracle Solaris 11.4 SRU1 发布了,自甲骨文期待已久的 Solaris 11.4 首次亮相到现在发布的第一个稳定版本更新以来,还不到一个月。 Solaris 11.4 SRU1 主要用于修复一些早期错误以及那些没有...

局长
2018/09/25
919
10

没有更多内容

加载失败,请刷新页面

加载更多

centos7 Nginx+rtmp 搭建流媒体服务器

一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum -y install gcc gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatib...

legend3
29分钟前
2
0
“别更新了,学不动了” 之:全栈开发者 2019 应该学些什么?

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文转载自 公众号 infoqchina 对于什么是全栈开发者并没有一个明确的定义。但是,有一件事是...

葡萄城技术团队
46分钟前
6
0
OSChina 周五乱弹 —— 姑娘馋的口水都留下来了。

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @且无需多言 :分享Fall Out Boy的单曲《Disloyal Order Of Water Buffaloes》 《Disloyal Order Of Water Buffaloes》- Fall Out Boy 手机党...

小小编辑
今天
783
15
vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部