c语言验证24点,C语言解24点游戏程序
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
前幾天在微博上看到24點的游戲,6 6 6
10。算了很久是在算不出來,最后我想我何不寫一個小程序解決它?說做就做,我剛開始的想法很簡單,就是列舉4個數的所有可能的表達式組合,然后計算表達
式是否等于24,如果是的話就找到了答案。但我花了一晚的時間都沒有寫出程序來…第二天我改變了思路,這也是從一些答案里得到的靈感。例如
一個3 8 3 8,它的答案是 3/(3 –
8/3)。要得到24這個答案,大笨兔想如果答案的第一個數是3,那么它要加多少,減多少,乘多少,除多少才是24?這樣我們就把就24的問題轉換成了規
模更小的問題,我們就這樣求下去,直到最后一個數字,然后判定是否是正確答案。我使用[code lang="js"]
typedef struct EXPREESSIONG{
float numbers[4];
char operation[4];
}exp;
[/code]來
保存一個表達式,numbers數組保存4個操作數,operation保存3個操作符。這里數字我使用float保存,以前使用的是int,但我發現
3/5的值是0。于是就改成了float,不過這里也會有一個問題,比如程序讀入 5 5 5 1 是得不到答案的。但是它確實有答案5/(5 –
1/5)。后來調試了才發現了一個問題:如果我定義兩個變量float number1,number2,分別賦值 number1 = 1.0,number2 = 5.0;然后判斷 1.0/5.0 == numbers1/number2 。這個表達式的值是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.所以我的程序在這里就不靈了,我不是太清楚浮點數的運算會不會使精度減少。(這是一個需要解決的問題),但是我的遞歸程序邏輯是正確的。程序的源碼在這里:點擊下載http://download.csdn.net/detail/dabentuaipangou/4409732。
(全文完)
總結
以上是生活随笔為你收集整理的c语言验证24点,C语言解24点游戏程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绿盟漏洞扫描_主机安全漏洞解决方案
- 下一篇: mysql 数据记录导出_mysql如何