亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言怎么實現24點游戲計算器

發布時間:2022-08-23 14:47:06 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

本篇內容介紹了“C語言怎么實現24點游戲計算器”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

前言

24點游戲計算器的規則如下

24點是一種益智游戲,24點是把4個整數(一般是正整數)通過加減乘除以及括號運算,使最后的計算結果是24的一個數學游戲,24點可以考驗人的智力和數學敏感性,它能在游戲中提高人們的心算能力。

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

一、項目的創建標

1、選擇項目

打開VS2019,點擊創建新項目-》然后選擇如下如圖所示的選項創建C語言項目

C語言怎么實現24點游戲計算器

2、輸入項目名稱和路徑

C語言怎么實現24點游戲計算器

3、創建頭文件Main.h、PointGame.h和源文件Main.c、PointGame.c如下所示

C語言怎么實現24點游戲計算器

二、項目的編寫

1、Main.h頭文件的編寫

#pragma once

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

2、PointGame.h頭文件的編寫

#pragma once

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

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

/*
* 最終表達式由四個數、括號、運算符組成,其大小不會超過
* 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源文件的編寫

#define _CRT_SECURE_NO_WARNINGS

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

/*
* 牌堆中計算24點
*   card  牌堆
*   size  個數
*/
bool game24(pCard card, int size)
{
	Card stack[3];
	/*
	* 如果牌堆里只有一張牌,判斷是否就是需要的目標
	*/
	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源文件的編寫

#define _CRT_SECURE_NO_WARNINGS

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



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

	int i, poke;
	Card card[SIZE];

	printf("請輸入4個數字 以判斷解法:");
	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;
}

三、項目的調試結果

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

結果如下

C語言怎么實現24點游戲計算器

按F5調試結果如下所示

C語言怎么實現24點游戲計算器

“C語言怎么實現24點游戲計算器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依兰县| 沾益县| 开鲁县| 衡阳县| 铜梁县| 楚雄市| 台中市| 上杭县| 开鲁县| 湖南省| 阜新市| 蒲江县| 巢湖市| 山丹县| 山西省| 平塘县| 林甸县| 禹城市| 五华县| 鄂温| 克拉玛依市| 新田县| 和政县| 成安县| 霍山县| 衡水市| 新乐市| 天祝| 商城县| 儋州市| 原阳县| 绥中县| 河西区| 贵南县| 固始县| 沽源县| 麟游县| 靖安县| 松桃| 淮安市| 邛崃市|