文档章节

2.8节 union 11.4

Cinzano
 Cinzano
发布于 2017/05/13 16:38
字数 611
阅读 28
收藏 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
合肥
其他
私信 提问
巧用 TypeScript(五)-- infer

介绍 最早出现在此 PR 中,表示在 条件语句中待推断的类型变量。 简单示例如下: 在这个条件语句 中, 表示待推断的函数参数。 整句表示为:如果 能赋值给 ,则结果是 类型中的参数 ,否则返...

三毛丶
03/14
0
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

没有更多内容

加载失败,请刷新页面

加载更多

linux下ctrl+c中止不了

有一台centos7的服务器,ctrl+c无效,并且tail -f也无效,只能关掉终端或者crtl+z放入后台再删掉,但是ping的时候使用ctrl+c是有效果的。 出现这种情况的原因可能是因为有人要使用ruby安装r...

gaolongquan
5分钟前
0
0
Android三年工作面经

工作三年出来看看新的机会,依次面试过如下公司: 小米(北京) iHandy(北京) 涂鸦智能(杭州) 微软(北京) 宜信(北京) 蚂蚁金服(杭州) 瓜子二手车(北京) 高德(北京) 基本上投递的简历都得到了面...

JerryLin123
8分钟前
0
0
开发函数计算的正确姿势——tensorflow serving

前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计...

阿里云云栖社区
12分钟前
4
0
社区角色(Kubernetes社区Maintainer是什么角色?)

社区成员按照角色,分为member、reviewer、approver、subproject owner。 下面我们介绍一下每个角色的职责和要求。 member reviewer approver subproject owner...

恋恋美食
29分钟前
0
0
【JavaScript】callee 与 caller

callee callee是函数参数arguments对象的一个属性,它指向参数arguments对象所在的函数自身。 function foo (x) {console.log(arguments.callee);return x;}foo(); 从控制台中可以看...

小草先森
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部