文档章节

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
合肥
其他
openSUSE 11.4 现已正式停止维护,再见了!

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

oschina
2014/09/29
4.8K
19
使用readelf/objdump查看dwaf调试信息

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

zhang_han666
05/10
0
0
Oracle Solaris 11.4 GA 版发布,这将是 Solaris 的绝唱

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

局长
08/30
0
18
Oracle Solaris 11.4 的首个更新 11.4 SRU1 发布

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

局长
09/25
0
0
openSUSE 11.4 发布-下载

openSUSE项目是Novell公司资助的社区计划。为在方方面面促进Linux的普及应用,该计划提供了对openSUSE这份完整Linux发行 的免费、简便的获取访问。openSUSE项目有三个主要目标:让openSUSE成...

红薯
2011/03/11
5.2K
10

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
8
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
12
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
20
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部