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

C語(yǔ)言實(shí)現(xiàn)24點(diǎn)游戲計(jì)算器的示例代碼

 更新時(shí)間:2022年08月22日 11:51:03   作者:編程愛(ài)好者-阿新  
24點(diǎn)是一種益智游戲,24點(diǎn)是把4個(gè)整數(shù)(一般是正整數(shù))通過(guò)加減乘除以及括號(hào)運(yùn)算,使最后的計(jì)算結(jié)果是24的一個(gè)數(shù)學(xué)游戲,24點(diǎn)可以考驗(yàn)人的智力和數(shù)學(xué)敏感性,它能在游戲中提高人們的心算能力。本文將用C語(yǔ)言實(shí)現(xiàn)這一游戲,感興趣的可以了解一下

前言

24點(diǎn)游戲計(jì)算器的規(guī)則如下

24點(diǎn)是一種益智游戲,24點(diǎn)是把4個(gè)整數(shù)(一般是正整數(shù))通過(guò)加減乘除以及括號(hào)運(yùn)算,使最后的計(jì)算結(jié)果是24的一個(gè)數(shù)學(xué)游戲,24點(diǎn)可以考驗(yàn)人的智力和數(shù)學(xué)敏感性,它能在游戲中提高人們的心算能力。

24點(diǎn)通常是使用撲克牌來(lái)進(jìn)行游戲的,一副牌中抽去大小王后還剩下52張(如果初練也可只用1~10這40張牌),任意抽取4張牌(稱為牌組),用加、減、乘、除(可加括號(hào))把牌面上的數(shù)算成24。每張牌必須只能用一次,如抽出的牌是3、8、8、9,那么算式為(9-8)×8×3或3×8÷(9-8)或(9-8÷8)×3等。

一、項(xiàng)目的創(chuàng)建標(biāo)

1、選擇項(xiàng)目

打開(kāi)VS2019,點(diǎn)擊創(chuàng)建新項(xiàng)目-》然后選擇如下如圖所示的選項(xiàng)創(chuàng)建C語(yǔ)言項(xiàng)目

2、輸入項(xiàng)目名稱和路徑

3、創(chuàng)建頭文件Main.h、PointGame.h和源文件Main.c、PointGame.c如下所示

二、項(xiàng)目的編寫(xiě)

1、Main.h頭文件的編寫(xiě)

#pragma once

#include <stdio.h>
#include <stdlib.h>

2、PointGame.h頭文件的編寫(xiě)

#pragma once

#include <stdbool.h>
#include <math.h>

#define PRECISION 1E-6
#define TARGET 24
#define SIZE 4

/*
* 最終表達(dá)式由四個(gè)數(shù)、括號(hào)、運(yùn)算符組成,其大小不會(huì)超過(guò)
* 5 * (SIZE - 1) + SIZE * 2 + 1
*/


typedef struct card
{
	double value;
	char expression[5 * (SIZE - 1) + SIZE * 2 + 1];
} Card, *pCard;

bool game24(pCard card, int size);

3、PointGame.c源文件的編寫(xiě)

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"
#include "PointGame.h"

/*
* 牌堆中計(jì)算24點(diǎn)
*   card  牌堆
*   size  個(gè)數(shù)
*/
bool game24(pCard card, int size)
{
	Card stack[3];
	/*
	* 如果牌堆里只有一張牌,判斷是否就是需要的目標(biāo)
	*/
	if (size == 1)
	{
		if (fabs(card[0].value - TARGET) < PRECISION)
		{
			printf("%d = %s\n", TARGET, card[0].expression);
			return true;
		}
		else
		{
			return false;
		}
	}
	/*
	*從牌堆中任選兩張牌
	*/
	int m, n, i, t;
	for (m = 0; m < size - 1; m++)
	{
		for (n = m + 1; n < size; n++)
		{
			/*
			* 剩余的牌放入新牌堆
			*/
			t = 0;
			for (i = 0; i < size; i++)
			{
				if (i != m && i != n)
				{
					stack[t].value = card[i].value;
					sprintf(stack[t].expression, "%s", card[i].expression);
					t++;
				}
			}
			/*
			* 選中兩張牌的和放入新牌堆
			*/
			stack[size - 2].value = card[m].value + card[n].value;
			sprintf(stack[size - 2].expression, "(%s + %s)", card[m].expression, card[n].expression);

			if (game24(stack, size - 1))
			{
				return true;
			}
			/*
			* 選中兩張牌的差放入新牌堆
			*/
			if (card[m].value > card[n].value)
			{
				stack[size - 2].value = card[m].value - card[n].value;
				sprintf(stack[size - 2].expression, "(%s - %s)", card[m].expression, card[n].expression);
			}
			else
			{
				stack[size - 2].value = card[n].value - card[m].value;
				sprintf(stack[size - 2].expression, "(%s - %s)", card[n].expression, card[m].expression);
			}

			if (game24(stack, size - 1))
			{
				return true;
			}

			/*
			* 選中兩張牌的積放入新牌堆
			*/
			stack[size - 2].value = card[m].value * card[n].value;
			sprintf(stack[size - 2].expression, "%s * %s", card[m].expression, card[n].expression);

			if (game24(stack, size - 1))
			{
				return true;
			}

			/*
			* 選中兩張牌的商放入新牌堆
			*/
			if (card[m].value != 0)
			{
				stack[size - 2].value = card[n].value / card[m].value;
				sprintf(stack[size - 2].expression, "%s / %s", card[n].expression, card[m].expression);

				if (game24(stack, size - 1))
				{
					return true;
				}
			}

			if (card[n].value != 0)
			{
				stack[size - 2].value = card[m].value / card[n].value;
				sprintf(stack[size - 2].expression, "%s / %s", card[m].expression, card[n].expression);

				if (game24(stack, size - 1))
				{
					return true;
				}
			}
		}
	}
	return false;
}

4、Main.c源文件的編寫(xiě)

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"
#include "PointGame.h"



int main()
{
	system("color 3E");

	int i, poke;
	Card card[SIZE];

	printf("請(qǐng)輸入4個(gè)數(shù)字 以判斷解法:");
	for (i = 0; i < SIZE; i++)
	{
		scanf("%d", &poke);
		card[i].value = (double)poke;
		sprintf(card[i].expression, "%d", poke);
	}

	if (game24(card, SIZE))
	{
		printf("Done\n");
	}
	else
	{
		printf("No Answer\n");
	}

	system("pause");
	return 0;
}

三、項(xiàng)目的調(diào)試結(jié)果

選擇生成----》生成解決方案。

結(jié)果如下

按F5調(diào)試結(jié)果如下所示

到此這篇關(guān)于C語(yǔ)言實(shí)現(xiàn)24點(diǎn)游戲計(jì)算器的示例代碼的文章就介紹到這了,更多相關(guān)C語(yǔ)言24點(diǎn)游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++文件流讀寫(xiě)操作詳解

    C++文件流讀寫(xiě)操作詳解

    本文詳細(xì)講解了C++文件流讀寫(xiě)操作的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 通過(guò)C++獲取CPU占用率的代碼示例(windows、linux、macOS)

    通過(guò)C++獲取CPU占用率的代碼示例(windows、linux、macOS)

    本文介紹了在Windows、Linux和macOS平臺(tái)下使用C++獲取CPU占用率的多種方法,包括系統(tǒng)整體CPU占用率和特定進(jìn)程CPU占用率的計(jì)算公式和實(shí)現(xiàn)代碼示例,需要的朋友可以參考下
    2025-03-03
  • C++實(shí)現(xiàn)并優(yōu)化異常系統(tǒng)

    C++實(shí)現(xiàn)并優(yōu)化異常系統(tǒng)

    異常處理是C++的一項(xiàng)語(yǔ)言機(jī)制,用于在程序中處理異常事件,下面這篇文章主要給大家介紹了關(guān)于C++中異常的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • OpenCV繪制正多邊形的方法

    OpenCV繪制正多邊形的方法

    這篇文章主要為大家詳細(xì)介紹了OpenCV繪制正多邊形的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 基于Qt開(kāi)發(fā)一個(gè)簡(jiǎn)單的OFD閱讀器

    基于Qt開(kāi)發(fā)一個(gè)簡(jiǎn)單的OFD閱讀器

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt框架開(kāi)發(fā)一個(gè)功能強(qiáng)大且性能優(yōu)異的OFD閱讀器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2025-01-01
  • C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問(wèn)題

    C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問(wèn)題

    這篇文章主要介紹了C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 掌握C++編程中反斜杠續(xù)行符的使用方法

    掌握C++編程中反斜杠續(xù)行符的使用方法

    這篇文章主要介紹了掌握C++編程中反斜杠續(xù)行符的使用方法,包括取反斜杠的本意的方法等基本知識(shí)點(diǎn),需要的朋友可以參考下
    2016-01-01
  • C++實(shí)現(xiàn)猜數(shù)字小游戲

    C++實(shí)現(xiàn)猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C語(yǔ)言實(shí)現(xiàn)單詞小助手功能完善版

    C語(yǔ)言實(shí)現(xiàn)單詞小助手功能完善版

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)單詞小助手功能的完善版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • OpenCV選擇圖像中矩形區(qū)域并保存

    OpenCV選擇圖像中矩形區(qū)域并保存

    這篇文章主要為大家詳細(xì)介紹了OpenCV選擇圖像中矩形區(qū)域并保存的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論

望谟县| 略阳县| 登封市| 云梦县| 旌德县| 襄樊市| 葫芦岛市| 开封市| 富民县| 翁牛特旗| 册亨县| 武隆县| 方山县| 沙坪坝区| 茌平县| 昌图县| 福建省| 大洼县| 盘山县| 明星| 京山县| 临泉县| 广东省| 文昌市| 甘谷县| 临洮县| 麟游县| 大安市| 萨嘎县| 宜川县| 贞丰县| 辽源市| 安西县| 乌苏市| 阿合奇县| 芜湖县| 哈尔滨市| 婺源县| 定远县| 平潭县| 营山县|