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 }

 

posted @ 2018-10-07 09:03  llccbb1  阅读(917)  评论(0编辑  收藏  举报