首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

对于二维数组例证中个别代码的疑问

2013-01-07 
对于二维数组例子中个别代码的疑问#includestdio.h#includestdlib.h#includetime.h#define NUM_SUIT

对于二维数组例子中个别代码的疑问

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUM_SUITS 4
#define NUM_RANKS 13
#define TRUE 1
#define FALSE 0
int main()
{
int in_hand[NUM_SUITS][NUM_RANKS]={0};
int num_cards,rank,suit;
char rank_code[]={'2','3','4','5','6','7','8','9','10','J','Q','K','A'};
char suit_code[]={'c','d','h','s'};
srand((unsigned) time(NULL));
printf("Enter number of cards in hand:");
scanf("%d",&num_cards);
printf("Your hand:");
while(num_cards>0)
{
suit=rand()%NUM_SUITS;
rank=rand()%NUM_RANKS;
if(!in_hand[suit][rank])
{
in_hand[suit][rank]=TRUE;
num_cards--;
printf(" %c%c",rank_code[rank],suit_code[suit]);
}
}
printf("\n");
}





if(!in_hand[suit][rank])不太理解这断代码的意思
[解决办法]
suit=rand()%NUM_SUITS;
        rank=rand()%NUM_RANKS;
        if(!in_hand[suit][rank])
        {
            in_hand[suit][rank]=TRUE;
            num_cards--;
            printf(" %c%c",rank_code[rank],suit_code[suit]);
        }

这个就是随机抽取一张牌,if(!in_hand[suit][rank])当in_hand[suit][rank]=0; 表示这张牌第一次被抽取到。 
[解决办法]
在前面有
int in_hand[NUM_SUITS][NUM_RANKS]={0}; 
因此用if(!in_hand[suit][rank])即 if (in_hand[suit][rank] == 0)
来表示手上没有牌,因此要发一张。
[解决办法]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUM_SUITS 4
#define NUM_RANKS 13
#define TRUE 1
#define FALSE 0
int main()
{
    int in_hand[NUM_SUITS][NUM_RANKS]={0};
    int num_cards,rank,suit;
    char rank_code[]={'2','3','4','5','6','7','8','9','10','J','Q','K','A'};
    char suit_code[]={'c','d','h','s'};
    srand((unsigned) time(NULL));
    printf("Enter number of cards in hand:");
    scanf("%d",&num_cards);
    printf("Your hand:");
    while(num_cards>0)
    {
        suit=rand()%NUM_SUITS;//0~3的数字
        rank=rand()%NUM_RANKS;//0~12的数字
//因为你初始化的都是0,这里判断是为了让它进去执行里面的语句
//也就是为了给你发牌
        if(!in_hand[suit][rank])
        {
            in_hand[suit][rank]=TRUE;//变成1
            num_cards--;
            printf(" %c%c",rank_code[rank],suit_code[suit]);
        }
    }
    printf("\n");
}

------解决方案--------------------


主要是为了防止随机产生的牌是一样的,也为了保证发的牌数的正确性!对于二维数组例证中个别代码的疑问

热点排行