一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

天天關(guān)注:C語(yǔ)言算法---撲克牌排序問(wèn)題描述

來(lái)源:CSDN 時(shí)間:2023-03-31 07:49:34

文章目錄


(資料圖片僅供參考)

撲克牌排序問(wèn)題描述 :輸入說(shuō)明 :輸出說(shuō)明 :輸入范例 :輸出范例 :解題思路參考代碼

撲克牌排序

問(wèn)題描述 :

明明和他的三位同學(xué)在玩一種非常有趣的撲克牌游戲。

在這個(gè)游戲中,一副牌的大小怪被除去,然后把剩下的 52 張牌隨機(jī)發(fā)給 4 個(gè)人,這樣每個(gè)人的手中就有 13 張牌。

接下來(lái)的任務(wù)就是每個(gè)人把自己手中的牌按一定的順序整理好。理牌的順序如下:

首先按牌的大小整理,牌的大小順序?yàn)椋篈,K,Q,J,T(10),9,…,2,如果牌的大小相等,則按如下的花色順序整理:黑桃(S),紅心(H),方塊(D),草花(C)。

例如有一個(gè)人手中拿到的牌如下:

ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CK

經(jīng)過(guò)整理后的牌的順序會(huì)變?yōu)椋?/p>

SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2

其中 SK、HK、CK 這三張牌的大小相同,都是 K,于是根據(jù)花色的順序整理,先是 S,再是 H,最后是 C,所以順序?yàn)?SK、HK、CK。

當(dāng)每個(gè)人把自己手中的牌整理完后,他們就開(kāi)始玩非常有趣的撲克游戲了。但是玩著玩著,他們發(fā)現(xiàn)了一個(gè)問(wèn)題:理牌的時(shí)間太長(zhǎng),這使得他們玩牌的興致被大大減弱了。于是他們來(lái)求助于你,能否幫他們寫一個(gè)理牌程序,幫助他們理牌,這樣他們就可以不必把大量的時(shí)間花在理牌上面,而盡情享受玩牌的樂(lè)趣了。

明明的問(wèn)題可以歸結(jié)為:給你每人手中順序打亂的 13 張牌,一共有 4 套,然后通過(guò)題目中描述的理牌順序,理好這 4 套牌。

輸入說(shuō)明 :

你寫的程序要求從標(biāo)準(zhǔn)輸入設(shè)備中讀入測(cè)試數(shù)據(jù)作為你所寫程序的輸入數(shù)據(jù)。標(biāo)準(zhǔn)輸入設(shè)備中有多組測(cè)試數(shù)據(jù),測(cè)試數(shù)據(jù)的第一行有一個(gè)整數(shù) n,表示有幾副牌需要整理,接著每副牌分四行輸入,每行 13 張牌;每張牌用兩個(gè)字母表示,首字母表示花色,尾字母表示點(diǎn)數(shù),兩張牌之間有一個(gè)空格。每副牌與每副牌之間沒(méi)有任何空行,第一副牌前面以及最后一副牌后面也都沒(méi)有任何空行。 注:通常,鍵盤為標(biāo)準(zhǔn)輸入設(shè)備。

輸出說(shuō)明 :

對(duì)于每一副牌,你寫的程序要求計(jì)算出一組相應(yīng)的運(yùn)算結(jié)果,并將每組運(yùn)算結(jié)果作為你所寫程序的輸出數(shù)據(jù)依次寫入到標(biāo)準(zhǔn)輸出設(shè)備中。對(duì)于每組輸入的牌,輸出排序后的牌,分四行輸出,輸出樣式與輸入相同。每組運(yùn)算結(jié)果與其后一組運(yùn)算結(jié)果之間有一個(gè)空行,第一組運(yùn)算結(jié)果前面及最后一組運(yùn)算結(jié)果后面沒(méi)有空行。 注:通常,顯示屏為標(biāo)準(zhǔn)輸出設(shè)備。

輸入范例 :

2ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CKD9 HJ H7 DJ S2 SQ DT C2 H4 H5 DA D4 D5D6 S4 S9 S5 S7 SJ H8 D3 C8 S3 C4 S6 C9SA C7 HA H6 DK CJ D7 CA C5 CT DQ C6 C3D6 S4 S9 S5 S7 SJ H8 D3 C8 S3 C4 S6 C9D9 HJ H7 DJ S2 SQ DT C2 H4 H5 DA D4 D5ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CKSA C7 HA H6 DK CJ D7 CA C5 CT DQ C6 C3

輸出范例 :

SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2DA SQ HJ DJ DT D9 H7 H5 D5 H4 D4 S2 C2SJ S9 C9 H8 C8 S7 S6 D6 S5 S4 C4 S3 D3SA HA CA DK DQ CJ CT D7 C7 H6 C6 C5 C3SJ S9 C9 H8 C8 S7 S6 D6 S5 S4 C4 S3 D3DA SQ HJ DJ DT D9 H7 H5 D5 H4 D4 S2 C2SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2SA HA CA DK DQ CJ CT D7 C7 H6 C6 C5 C3

解題思路

使用 C 語(yǔ)言的庫(kù)函數(shù) qsort,需要注意撲克牌的大小不完全是字典序

A > K > Q > J > 9 > 8 > …… > 2;

花色為字典序降序

黑桃(S),紅心(H),方塊(D),草花(C)。

參考代碼

#include#include#include#include#include#include#define MAX_SIZE 13struct Poker{char color;  char num;};void input(struct Poker p[4][MAX_SIZE]);void output(struct Poker p[4][MAX_SIZE]);int cmp(const void *a, const void *b){struct Poker *c = (struct Poker *)a;  struct Poker *d = (struct Poker *)b;  if (c->num != d->num) //對(duì)牌號(hào)排序: A > K > Q > J    if ("A" <= c-="">num && c->num <= "Z" && "A" <= d-="">num && d->num <= if="" c-="">num == "Q" && d->num == "J" || c->num == "J" && d->num == "Q")        return d->num - c->num;      else if (c->num == "K" && d->num == "J" || c->num == "J" && d->num == "K")        return d->num - c->num;      else        return c->num - d->num;    else //字母排在數(shù)字后      return d->num - c->num;  else //數(shù)字相同,按顏色排序    return d->color - c->color;}int main(){int i, j, n;  struct Poker poker[4][MAX_SIZE];  scanf("%d", &n);  getchar();  for (i = 0; i < n; i++)  {input(poker);    for (j = 0; j < 4; j++)      qsort(poker[j], MAX_SIZE, sizeof(poker[j][0]), cmp);    output(poker);    if (n > 1)      putchar("\n");  }  return 0;}void input(struct Poker p[4][MAX_SIZE]){int i, j;  for (i = 0; i < 4; i++)  {for (j = 0; j < 13; j++)    {scanf("%c%c", &p[i][j].color, &p[i][j].num);      getchar();    }  }}void output(struct Poker p[4][MAX_SIZE]){int i, j;  for (i = 0; i < 4; i++)  {printf("%c%c", p[i][0].color, p[i][0].num);    for (j = 1; j < 13; j++)      printf(" %c%c", p[i][j].color, p[i][j].num);    putchar("\n");  }}

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 新巴尔虎右旗| 台江县| 宜宾县| 两当县| 文山县| 墨江| 浦城县| 鄢陵县| 临潭县| 伊吾县| 达拉特旗| 景东| 湖北省| 长汀县| 郁南县| 花莲市| 墨脱县| 合肥市| 洛宁县| 和林格尔县| 南江县| 郓城县| 盱眙县| 沙雅县| 宜州市| 内江市| 宜阳县| 潮州市| 平江县| 白河县| 珠海市| 绥芬河市| 怀远县| 枞阳县| 周宁县| 大渡口区| 舟山市| 浙江省| 密云县| 屏东县| 富顺县|