2.8节 union 11.4
博客专区 > Cinzano 的博客 > 博客详情
2.8节 union 11.4
Cinzano 发表于1年前
2.8节 union 11.4
  • 发表于 1年前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 《算法笔记》2.8小节——C/C++快速入门->结构体(struct)的使用——union——https://coding.net/u/cinzano/p/AlgorithmNotes-codeup_exercises/git/blob/master/11.2

 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;
}

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 19
码字总数 6205
×
Cinzano
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: