#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSTACK 100 /*最大栈容量*/
int stack [MAXSTACK]; /*栈数组*/
int top = -1; /*栈顶*/
/*---------------------*/
/*栈数据的存入 */
/*---------------------*/
int push (int value)
{
if (top >= MAXSTACK) {
printf ("栈已满\n");
return -1;
}
top++;
stack [top] = value;
}
/*---------------------*/
/*栈数据的取出 */
/*---------------------*/
int pop ()
{
int temp;
if (top < 0) {
printf("栈内容为空\n");
return -1;
}
temp = stack [top];
top--;
return temp;
}
void output (int card)
{
int type;
type = card / 13 + 3;
switch (type) {
case 3:
printf("红心 %2d ", card % 13 + 1);
break;
case 4:
printf("方块 %2d ", card % 13 + 1);
break;
case 5:
printf("梅花 %2d ", card % 13 + 1);
break;
case 6:
printf("黑桃 %2d ", card % 13 + 1);
break;
}
}
/*-----------------------------*/
/*主程序:洗牌后,将牌发给4个人 */
/*红心 :数组 0~12 */
/*方块 :数组 13~25 */
/*梅花 :数组 26~38 */
/*黑桃 :数组 39~51 */
/*-----------------------------*/
int main(void)
{
int card [52]; /*扑克牌数组*/
int pos; /*牌代码*/
int i, temp;
long temptime;
srand (time(&temptime) % 60); /*使用时间初始化随机数*/
for (i = 0; i < 52; i++)
card [i] = 0; /*清除扑克牌数组*/
i = 0;
while (i != 52) {
pos = rand() % 52; /*随机数取值 0~51*/
if (card [pos] == 0) {
push (pos);
card [pos] = 1; /*设置此张牌洗过*/
i++;
}
}
printf("玩家1 玩家2 玩家3 玩家4 \n");
printf("===============================\n");
for (i = 0; i < 5; i++) { /*发牌给四人循环*/
temp = pop(); /*取出栈数据*/
output (temp);
temp = pop(); /*取出栈数据*/
output (temp);
temp = pop(); /*取出栈数据*/
output (temp);
temp = pop(); /*取出栈数据*/
output (temp);
printf("\n");
}
return (0);
}
beyes@linux-beyes:~/C/structer/stack> ./card.exe
玩家1 玩家2 玩家3 玩家4
===============================
梅花 7 方块 12 黑桃 6 黑桃 10
黑桃 3 方块 8 红心 9 红心 6
黑桃 13 黑桃 4 红心 11 红心 3
方块 7 方块 5 红心 12 红心 8
黑桃 7 红心 2 方块 13 方块 1
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |