C语言实例解析精粹学习笔记——33(扑克牌的结构表示)
实例33:
使用“结构”定义一副扑克牌,并对变量赋值,输出结果
思路:
扑克牌有4种花色,用枚举类型表示花色,其他都是结构体的简单应用
程序代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 enum suits{CLUBS, DIAMONDS, HEARTS, SPADES}; 6 /*可以将这几个取值等价为0、1、2、3 7 即 8 CLUBS->0 9 DIAMONDS->1 10 HEARTS->2 11 SPADES->3 12 */ 13 14 /*定义一个纸牌结构体,包含了纸牌的两个属性 15 1、花色 16 2、数值(因为有A、J、Q这种类型的值,所以用char类型) 17 */ 18 struct card 19 { 20 enum suits suit; 21 char value[3]; 22 }; 23 24 struct card deck[52]; //一副52张的扑克牌 25 char cardval[][2] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; 26 //是一个二维字符数组,但是可以看做字符串数组,因为这个字符数组的第二维的大小可以看做字符串的大小 27 //一个字符串包括字符以及末尾的‘\0',因为有10所以字符串数组的第二维定义为3 28 char suitname[][9] = {"CLUBS", "DIAMONDS", "HEARTS", "SPADES"}; 29 30 int main() 31 { 32 int i,j; 33 enum suits s; 34 35 //循环,给deck赋值。 36 for(i=0; i<=12; i++) 37 { 38 for(s=CLUBS; s<= SPADES; s++) 39 { 40 j=i*4+s; 41 deck[j].suit = s; 42 strcpy(deck[j].value,cardval[i]); 43 } 44 } 45 46 for(j=0; j<52; j++) 47 printf("(%s%3s)%c",suitname[deck[j].suit],deck[j].value, j%4==3?'\n':'\t'); 48 return 0; 49 }