文档章节

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
05/10
0
0
openSUSE 11.4 现已正式停止维护,再见了!

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

oschina
2014/09/29
4.8K
19
openSUSE 11.4 发布-下载

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

红薯
2011/03/11
5.2K
10
SQL注入攻击高级

原文出处:i春秋学院 前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御。有攻必有防,当然还要来探讨一下SQL注入防御技巧...

i春秋学院
2016/09/01
0
0
SP++3.0 发布,欢迎大家使用

消息来自 Jerry 的博客: SP++ (Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与数值计算中常用算法的C++实现。SP++中所有算法都以C++类模板...

红薯
2011/02/12
4.5K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
47分钟前
0
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
1
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
4
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部