C语言实例025

大家好,我是一童,今天分享的是共用体 (老师学生);枚举(取小球);
1.共用体
定义:不同的变量共享同一段内存(共享成员);
形式:
union 共用体名
{
成员列表
}变量列表;

源码:

#include <stdio.h>//共用体之学生老师
#include <string.h>
#define N 10
#define M 2//人数
union Cate//共用体
	{
		int clas;
		char position[N];
	}category;
struct person/*学生:姓名,号码,性别,职业,班级;老师:姓名,号码,性别,职业,职务*/
{
	char name[N];
	char sex[N];
	char job[N];
	long phone;
	union Cate category;
}P[2];//有两个元素老师,学生
void main()
{
	int i;
	for(i=0;i<M;i++)
	{
		printf("请输入人物信息 NO.%d:\n",i+1);
		printf("名字:\n");
		scanf("%s",&P[i].name);
		printf("电话:\n");
		scanf("%ld",&P[i].phone);
	
		printf("性别: \n");
		scanf("%s",&P[i].sex);
		printf("职业:\n");
		scanf("%s",&P[i].job);
		if(strcmp(P[i].job,"student")==0)
		{
			printf("班级:\n");
			scanf("%d",&P[i].category.clas);
		}
		else if(strcmp(P[i].job,"teacher")==0)
		{
			printf("职务:\n");
			scanf("%s",&P[i].category.position);
		}
		else
			printf("输入错误!!\n");
		puts("\n");
	}
	printf("\n");
	printf("\t姓名\t号码\t性别\t职业\t班级或职务\n");
	for(i=0;i<M;i++)
	{
		if(strcmp(P[i].job,"student")==0)
			printf("\t%s\t%ld\t%s\t%s\t%d\n",P[i].name,P[i].phone,P[i].sex,P[i].job,P[i].category.clas);
		else
			printf("\t%s\t%ld\t%s\t%s\t%s\n",P[i].name,P[i].phone,P[i].sex,P[i].job,P[i].category.position);
	}
}

截图:
1

2.枚举类型
定义:把可能的值一一列举出来,变量的值只限于列举出来的值范围;
类型:enum[枚举名]{枚举元素类型};

源码:

#include <stdio.h.>//口袋有红黄蓝白黑5种颜色球若干,每次取3个(取完放回),共有多少种取法
void main()
{
	enum Color{red,yellow,blue,white,black};
	int i,j,k,p;
	int n=0,loop;
	printf("取法:\n");
	for(i=red;i<=black;i++)
		for(j=red;j<=black;j++)
			if(i!=j)
			{
				for(k=red;k<=black;k++)
					if(k!=i&&k!=j)
					{
						n++;
						printf("%-4d",n);
						for(loop=0;loop<3;loop++)
						{
							switch(loop)
							{
							case 0:p=i;break;
							case 1:p=j;break;
							case 2:p=k;break;
							default:break;
							}
							switch(p)
							{
							case red:printf("%-10s","red");break;
							case yellow:printf("%-10s","yellow");break;
							case blue:printf("%-10s","blue");break;
							case white:printf("%-10s","white");break;
							case black:printf("%-10s","black");break;
							default:break;
							}
						}
						printf("\n");
					}
			}
			printf("\n\n共有%d种取法!!\n",n);
}

截图:
1

2

若有疑问,欢迎留言!!;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值