24点游戏c语言源代码6,C语言解24点游戏程序
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
前幾天在微博上看到24點(diǎn)的游戲,6 6 6
10。算了很久是在算不出來,最后我想我何不寫一個(gè)小程序解決它?說做就做,我剛開始的想法很簡單,就是列舉4個(gè)數(shù)的所有可能的表達(dá)式組合,然后計(jì)算表達(dá)
式是否等于24,如果是的話就找到了答案。但我花了一晚的時(shí)間都沒有寫出程序來…第二天我改變了思路,這也是從一些答案里得到的靈感。例如
一個(gè)3 8 3 8,它的答案是 3/(3 –
8/3)。要得到24這個(gè)答案,大笨兔想如果答案的第一個(gè)數(shù)是3,那么它要加多少,減多少,乘多少,除多少才是24?這樣我們就把就24的問題轉(zhuǎn)換成了規(guī)
模更小的問題,我們就這樣求下去,直到最后一個(gè)數(shù)字,然后判定是否是正確答案。我使用[code lang="js"]
typedef struct EXPREESSIONG{
float numbers[4];
char operation[4];
}exp;
[/code]來
保存一個(gè)表達(dá)式,numbers數(shù)組保存4個(gè)操作數(shù),operation保存3個(gè)操作符。這里數(shù)字我使用float保存,以前使用的是int,但我發(fā)現(xiàn)
3/5的值是0。于是就改成了float,不過這里也會(huì)有一個(gè)問題,比如程序讀入 5 5 5 1 是得不到答案的。但是它確實(shí)有答案5/(5 –
1/5)。后來調(diào)試了才發(fā)現(xiàn)了一個(gè)問題:如果我定義兩個(gè)變量float number1,number2,分別賦值 number1 = 1.0,number2 = 5.0;然后判斷 1.0/5.0 == numbers1/number2 。這個(gè)表達(dá)式的值是0(在我的cfree上是這么多)。[code lang="js"]
#include <stdio.h>
int main()
{
float number1,number2;
number1 = 1.0;number2 = 5.0;
printf("%d\n",(1.0/5.0) == (number1/number2));
return 0;
}
[/code]輸出0。但是你將5.0改成2.0的話它的值又是1.所以我的程序在這里就不靈了,我不是太清楚浮點(diǎn)數(shù)的運(yùn)算會(huì)不會(huì)使精度減少。(這是一個(gè)需要解決的問題),但是我的遞歸程序邏輯是正確的。程序的源碼在這里:點(diǎn)擊下載http://download.csdn.net/detail/dabentuaipangou/4409732。
(全文完)
總結(jié)
以上是生活随笔為你收集整理的24点游戏c语言源代码6,C语言解24点游戏程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信、微博全部断更!老干妈回应“退网”:
- 下一篇: 纪念北京冬奥会一周年 冰墩墩分墩“板镜墩