在数组pai a[52]={{1,'a'},{1,'b'}........} 中随意抽出20张牌,放在数组int b[20]={........}中,编一个函数程序来完成这项任务。
时间: 2024-02-27 18:56:01 浏览: 75
好的,请参考下面的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, j, k;
int a[52][2];
int b[20];
srand((unsigned)time(NULL)); // 初始化随机数种子
// 初始化牌组
k = 0;
for (i = 0; i < 4; i++)
{
for (j = 1; j <= 13; j++)
{
a[k][0] = j;
a[k][1] = i;
k++;
}
}
// 从牌组中随机抽取20张牌
for (i = 0; i < 20; i++)
{
j = rand() % (52 - i) + i; // 生成随机数
b[i] = a[j][0]; // 将点数存入b数组
a[j][0] = a[i][0]; // 交换a[j]和a[i],保证不会重复取牌
a[i][0] = b[i];
a[j][1] = a[i][1];
a[i][1] = -1;
}
// 输出结果
printf("20 cards: ");
for (i = 0; i < 20; i++)
{
printf("%d ", b[i]);
}
printf("\n");
return 0;
}
```
这个程序使用两个数组a和b,其中a存储了一副牌的所有牌面和花色信息,b用来存储随机取出的20张牌的点数。程序首先初始化了一副牌,并且使用随机数生成20个不同的下标,然后将对应的点数存入b数组中。程序最后输出了b数组中的20张牌。
阅读全文