共用体,枚举

1.例:

在这里插入图片描述

2.数据定义:

(1)在内部定义共用体

#include <stdio.h>
struct                          
{ 
	int num; 
	char name[10]; 
	char sex; 
	char job; 
	union       ///此处无类型                  
	{ 
		int clas; 
		char position[10];  
	}category; 
}person[2]; 

(2)在外部定义共用体

#include <stdio.h>
union  Categ   ///有共用体类型
{ 
	int clas; 
    	char position[10];  
}; ///与定义结构体类似
struct                          
{ 
	int num; 
	char name[10]; 
	char sex; 
	char job;
	union  Categ  category;///调用
}person[2]; 

3.输入:

for(i=0;i<2;i++)
{
        scanf("%d %s %c %c", 
	    &person[i].num, person[i].name, &person[i].sex, &person[i].job);
        if(person[i].job == 's')
        	scanf("%d", &person[i].category.clas);//班级
        else if(person[i].job == 't')
        	scanf("%s", person[i].category.position);  //职务
        else   
	printf("Input error!"); 
}

4.输出

for(i=0;i<2;i++)
{
    if (person[i].job == 's') 
	printf("%-6d%-10s%-4c%-4c%-10d\n",
		person[i].num,
		person[i].name,
		person[i].sex,
		person[i].job,
		person[i].category.clas  );
    else                                            
	printf("%-6d%-10s%-4c%-4c%-10s\n",
		person[i].num,
		person[i].name,
		person[i].sex, 
		person[i].job,
		person[i].category.position  );
}

5.枚举
(1)
题意:
口袋中有红、黄、蓝、白、黑5种颜色的球若干。
每次从口袋中依次取出3个球;
求得到3种不同色的球的取法,打印出每种排列的情况。
思路:
定义枚举类型color,其中有红、黄、蓝、白、黑5个枚举元素。
3个球需3个枚举变量;分别从“红”到“黑”,只要“颜色”不一样就将结果打出来。
用一个计数器(整型变量)记忆取出不同色球组合次数。

(2)

int main() 
{
     enum Color{red,yellow,blue,white,black};
     enum Color i,j,k; 
     int n,loop;
     n=0;
     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=n+1; 
		printf("%-4d",n);
		printf("%d,%d,%d\n",i,j,k);
	           }
	}
	printf("\ntotal:%5d\n",n);
	return 0;
}
发布了17 篇原创文章 · 获赞 0 · 访问量 193

猜你喜欢

转载自blog.csdn.net/weixin_45719073/article/details/103481475