最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)紙牌游戲之小貓釣魚算法

 更新時(shí)間:2019年01月15日 15:49:14   作者:Gerald Kwok  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)紙牌游戲之小貓釣魚算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)小貓釣魚算法的具體代碼,供大家參考,具體內(nèi)容如下

星期天小哼和小哈約在一起玩桌游,他們正在玩一個(gè)非常古怪的撲克游戲——“小貓釣魚”。游戲的規(guī)則是這樣的:將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的第一張撲克牌放在桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時(shí),如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,并依次放到自己手中牌的末尾。當(dāng)任意一人手中的牌全部出完時(shí),游戲結(jié)束,對(duì)手獲勝。(用兩個(gè)隊(duì)列和一個(gè)棧完成)

代碼如下:

#define _CRT_SECURE_NO_WARNINGS 1
 
#include <stdio.h>
#include <stdlib.h>
 
/*
* 游戲規(guī)則是這樣的,將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的第一張撲克牌放桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌的上面,就像這樣兩個(gè)人交替出牌。出牌時(shí),如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及中間的牌全部拿走,并依次放到自己手中的牌的末尾。當(dāng)任意一個(gè)人手上的牌全部打完時(shí),另一個(gè)人獲勝
* 郭文峰
* 2018/9/29
*/
 
struct queue
{
 int data[1000];
 int head;
 int tail;
};
 
struct stack
{
 int data[10];
 int top;
};
 
int main(void)
{
 struct queue q1, q2;
 struct stack s;
 int i = 0;
 int t = 0;
 int book[10];
 
 //初始化隊(duì)列
 q1.head = 1;
 q1.tail = 1;
 q2.head = 1;
 q2.tail = 1;
 
 //初始化棧
 s.top = 0;
 
 for (i = 0; i < 10; i++)
 {
 book[i] = 0;
 }
 
 //依次向隊(duì)列插入6個(gè)數(shù)
 //給小哼6張牌
 for (i = 1; i <= 6; i++)
 {
 scanf("%d", &q1.data[q1.tail]);
 q1.tail++;
 }
 
 //依次向隊(duì)列插入6個(gè)數(shù)
 //給小哈6張牌
 for (i = 1; i <= 6; i++)
 {
 scanf("%d", &q2.data[q2.tail]);
 q2.tail++;
 }
 
 //當(dāng)隊(duì)列不為空的時(shí)候執(zhí)行循環(huán)
 while (q1.head < q1.tail && q2.head < q2.tail)
 {
 t = q1.data[q1.head];//小哼出一張牌
 //判斷小哼打出的牌是否能贏
 if (book[t] == 0)//表明桌上沒有牌面為t 的牌
 {
 q1.head++;
 s.top++;
 s.data[s.top] = t;
 book[t] = 1;
 }
 else
 {
 q1.head++;
 q1.data[q1.tail] = t;
 q1.tail++;
 while (s.data[s.top] != t)
 {
 book[s.data[s.top]] = 0;
 q1.data[q1.tail] = s.data[s.top];
 q1.tail++;
 s.top--;
 }
 }
 
 t = q2.data[q2.head];//小哈出一張牌
 //判斷小哈打出的牌是否能贏
 if (book[t] == 0)//表明桌上沒有牌面為t 的牌
 {
 q2.head++;
 s.top++;
 s.data[s.top] = t;
 book[t] = 1;
 }
 else
 {
 q2.head++;
 q2.data[q2.tail] = t;
 q2.tail++;
 while (s.data[s.top] != t)
 {
 book[s.data[s.top]] = 0;
 q2.data[q2.tail] = s.data[s.top];
 q2.tail++;
 s.top--;
 
 }
 
 }
 }
 
 if (q2.head == q2.tail)
 {
 printf("小哼WIN\n");
 printf("小哼手上還剩的牌為:");
 for (i = q1.head; i <= q1.tail - 1; i++)
 {
 printf(" %d", q1.data[i]);
 }
 
 if (s.top > 0)
 {
 printf("\n桌上的牌是:");
 for (i = 1; i <= s.top; i++)
 {
 printf(" %d", s.data[i]);
 }
 }
 else
 {
 printf("桌上沒有牌了!\n");
 }
 }
 else
 {
 printf("小哈WIN\n");
 printf("小哈手上還剩的牌為:");
 for (i = q2.head; i <= q2.tail - 1; i++)
 {
 printf(" %d", q2.data[i]);
 }
 
 if (s.top > 0)
 {
 printf("\n桌上的牌是:");
 for (i = 1; i <= s.top; i++)
 {
 printf(" %d", s.data[i]);
 }
 }
 else
 {
 printf("桌上沒有牌了!\n");
 }
 }
 
 system("pause");
 
 return 0;
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Qt?Qml實(shí)現(xiàn)任意角為圓角的矩形

    Qt?Qml實(shí)現(xiàn)任意角為圓角的矩形

    在?Qml?中,矩形(Rectangle)是最常用的元素之一,本文將介紹如何通過自定義?Qml?元素實(shí)現(xiàn)一個(gè)任意角可為圓角的矩形,感興趣的可以了解下
    2025-01-01
  • C語言實(shí)現(xiàn)簡易訂餐系統(tǒng)

    C語言實(shí)現(xiàn)簡易訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 淺談十進(jìn)制小數(shù)和二進(jìn)制小數(shù)之間的轉(zhuǎn)換

    淺談十進(jìn)制小數(shù)和二進(jìn)制小數(shù)之間的轉(zhuǎn)換

    下面小編就為大家?guī)硪黄獪\談十進(jìn)制小數(shù)和二進(jìn)制小數(shù)之間的轉(zhuǎn)換。小編覺得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++的函數(shù)與指針

    C++的函數(shù)與指針

    今天小編就為大家分享一篇關(guān)于C++函數(shù)與指針的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2021-10-10
  • C++輕松實(shí)現(xiàn)字符串與字符數(shù)組的相互轉(zhuǎn)換

    C++輕松實(shí)現(xiàn)字符串與字符數(shù)組的相互轉(zhuǎn)換

    本文詳細(xì)介紹了如何在C++中通過c_str()和strcpy()函數(shù)將字符串轉(zhuǎn)換為字符數(shù)組,以及使用for循環(huán)、+運(yùn)算符、重載=和內(nèi)置構(gòu)造函數(shù)將字符數(shù)組轉(zhuǎn)換為字符串的方法,需要的朋友可以參考下
    2025-03-03
  • C++小知識(shí):用合適的工具來分析你的代碼

    C++小知識(shí):用合適的工具來分析你的代碼

    今天小編就為大家分享一篇關(guān)于C++小知識(shí):用合適的工具來分析你的代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解

    關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解

    今天小編就為大家分享一篇關(guān)于關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言三子棋小游戲?qū)崿F(xiàn)全程

    C語言三子棋小游戲?qū)崿F(xiàn)全程

    三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對(duì)角線連起來,相對(duì)兩邊依次擺上三個(gè)雙方棋子,只要將自己的三個(gè)棋子走成一條線,對(duì)方就算輸了,想用c語言做出這個(gè)游戲,事實(shí)上也是比較簡單的,下面通過c語言進(jìn)行對(duì)五子棋的分析
    2022-05-05
  • C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)堆排序圖文示例

    C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)堆排序圖文示例

    這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)堆排序的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息

    C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息

    這篇文章主要介紹了C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

文昌市| 浦东新区| 楚雄市| 道孚县| 洮南市| 巴彦县| 大石桥市| 桐庐县| 都兰县| 稷山县| 绍兴县| 上栗县| 卓资县| 板桥市| 公安县| 武夷山市| 古交市| 达孜县| 依安县| 苍山县| 盖州市| 香港| 昂仁县| 济宁市| 朝阳市| 彰武县| 崇明县| 留坝县| 三明市| 鄂州市| 龙山县| 万宁市| 江西省| 乐清市| 崇文区| 扎鲁特旗| 淮南市| 盘山县| 六安市| 维西| 长阳|