定义一副扑克牌(没有大小王),要求随机抽出十张牌并打印出来(注意:扑克
牌没有两张一样的牌,花色可以用h(红桃),s(黑桃),c(梅花),d(方块)表示,其中A用‘A‘表示
希望解答用c语言且尽量简单易看懂,谢谢
c语言定义一副扑克牌(没有大小王),要求随机抽出十张牌并打印出来(注意:扑克 牌没有两张一样的牌,花色可以用h(红桃),s(黑桃),c(梅花),d(方块)表示,其中A用‘A‘表示
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
技术专家团-小桥流水 2023-11-04 10:02关注先定义好字符数组,然后用rand随机产生数字,数字作为字符数组的下标来获取花色和扑克牌的大小,获取数字是需要判断是否已经获取过,如果已经获取过,需要重新生成。
运行结果:
代码如下:
#include <stdio.h> #include <time.h> #include <stdlib.h> int main() { char color[5]={'h','s','c','d'}; //花色 char nmb[]={'A','2','3','4','5','6','7','8','9','x','J','Q','K'}; //扑克牌大小,10先用x表示 int index,a[10],i,j,k=0; srand((unsigned int)time(0)); //生成随机数种子 for(i=0;i<10;i++) //随机抽取10张 { index = rand()%4;//生成花色 printf("%c",color[index]); while(1) { index = rand()%13; //生成数字 //判断数字是否已经存在 for(j=0;j<k;j++) { if(a[j]==index) //已经存在 break; } if(j==k) //没有生成过 { if(nmb[index]=='x') //将x替换成10 printf("10"); else printf("%c",nmb[index]); a[k] = index; //将索引保存到数组中 k++; // break; } } printf("\n"); } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录