满意答案
曾经也遇到过同样的题目,当时没设计好,今天终于完成了这个工作。对程序有任何疑问请加QQ:770305791
我的算法与其他的算法不一样,如果你能细细分析就可以发现,代码如下:
#include
#include
#include
void insert_sort(int b[52])
{
int n[52] = {0}, i, j;
for(i = 0; i < 52; i++)
{
for(j = 0; j <= b[i]; j ++)
{
if(n[j] == 1)
b[i] ++;
}
n[b[i]] = 1;
}
}
int main()
{
char s[4];
int d,i,j;
int b[52]={0};
srand(time(NULL));
for(i = 52; i > 0; i --) //这种方式避免了一直产生随机数
{
d = rand() % i;
b[52 - i] = d;
}
insert_sort(b); //调用了插序函数
printf("\n");
for(i = 0; i < 52; i ++)
printf("%4d", b[i]); //b[i]里面存储的是随机的牌
printf("\n");
//只需要用代码发给四个人显示出来就OK
/*给个示例
printf("player1: ");
for(i = 0; i < 52; i += 4)
{
if(b[i] / 13 == 0)
if(b[i] % 13 == 0)
sprintf(s, "hA");
else if(b[i] % 13 == 10)
sprintf(s, "hJ");
else if(b[i] % 13 == 11)
sprintf(s, "hQ");
else if(b[i] % 13 == 12)
sprintf(s, "hK");
else
sprintf(s, "h%d", b[i] % 13 + 1);
else if(b[i] / 13 == 1)
if(b[i] % 13 == 0)
sprintf(s, "sA");
else if(b[i] % 13 == 10)
sprintf(s, "sJ");
else if(b[i] % 13 == 11)
sprintf(s, "sQ");
else if(b[i] % 13 == 12)
sprintf(s, "sK");
else
sprintf(s, "s%d", b[i] % 13 + 1);
else if(b[i] / 13 == 2)
if(b[i] % 13 == 0)
sprintf(s, "dA");
else if(b[i] % 13 == 10)
sprintf(s, "dJ");
else if(b[i] % 13 == 11)
sprintf(s, "dQ");
else if(b[i] % 13 == 12)
sprintf(s, "dK");
else
sprintf(s, "d%d", b[i] % 13 + 1);
else if(b[i] / 13 == 3)
if(b[i] % 13 == 0)
sprintf(s, "cA");
else if(b[i] % 13 == 10)
sprintf(s, "cJ");
else if(b[i] % 13 == 11)
sprintf(s, "cQ");
else if(b[i] % 13 == 12)
sprintf(s, "cK");
else
sprintf(s, "c%d", b[i] % 13 + 1);
printf("%-4s", s);
}
*/
}
00分享举报