【项目任务】
口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,求得到3种不同色的球的可能取法,并输出每种排列的情况。
【设计思路】
定义一个枚举类型,标识红、黄、蓝、白、黑5种颜色。
【程序代码】
#include <stdio.h>
enum color {red,yellow,blue,white,black};
void print(enum color c)
{
switch(c)
{
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;
}
}
main()
{
enum color b1,b2,b3; /*b1,b2,b3分别表示取出3个球的颜色*/
int n=0;
for(b1=red;b1<=black;b1++)
for(b2=red;b2<=black;b2++)
for(b3=red;b3<=black;b3++)
if(b1!=b2 && b2!=b3 && b1!=b3)
{
printf("%-4d",++n);
print(b1); print(b2); print(b3);
printf("\n");
}
printf("\ntotal:%5d\n",n);
}
【运行结果】
1 red yellow blue
2 red yellow white
3 red yellow black
… … … …
… … … …
59 black white yellow
60 black white blue
total: 60
【知识拓展】
如果一个变量只有几种可能的值,那么可以将其定义成枚举类型,增强程序的可读性。
本章介绍了结构体、共用体两种构造数据类型,结构体可以解决由多种不同类型数据组成的数据实体问题。结构体和共用体都由成员组成,成员可以具有不同的数据类型。链表是一种非常重要的数据类型,它便于实现动态的存储分配。枚举是一种基本数据类型,枚举变量的取值通常是有限的,枚举元素是常量。使用typedef可以定义一种新类型名,照顾用户的编程习惯,增加程序的可读性。