HDU 簡單計算器

2021-10-04 16:36:39 字數 1197 閱讀 3989

讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。

input

測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。

output

對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。

sample input

1 + 2

4 + 2 * 5 - 7 / 11

0sample output

3.00

13.36

題解:

//思路將:-,*,/運算在輸入時就完成 ,最後將陣列中的所有元素進行加法運算 

//本題沒有出現括號,用這種方法簡單快捷,用棧**太長容易出現問題

//有以下幾點要注意

//1.輸入何時停止

//2.當輸入0和回車後才算終止輸入,所以不要忘記0+12=12仍然是可以計算的

//3.用double不要用float

#include

#include

intmain()

double ans=0;

int i=0;

for(i=

0;i<=top;i++

) ans+

=s[i]

;printf

("%.2lf\n"

,ans);}

return0;

}

希望能幫到大家!

*另外我發現乙個問題

我的**中有一段是這樣的

while

(scanf

("%d"

,&n)){

char x=

getchar()

;if(n==

0&&x==

'\n'

)break

;

但其實本來我是這麼寫的

while

(scanf

("%d"

,&n)){

if(n==0&&

getchar()

=='\n'

)break

;

下面這種做法雖然也能結束一行的輸入,但輸出結果除了與0有關的運算其餘均不對,請問這兩種有什麼區別呢?求大佬解釋,感激萬分。

hdu1237 簡單計算器

模擬棧運算,其實遞迴也可以,不過我夠嗆能寫的出來 其實老早就看過表示式求值的問題,只不過一直沒有敲過,今天敲了一下,發現還是有不少問題的 code include include include using namespace std bool check char,char void solve ...

hdu 1237 簡單計算器

模擬棧。設兩個陣列,乙個裝運算元,乙個裝操作符。根據優先順序,先乘除,後加減。include include include include char s 210 op 200 s1 200 double a 200 int char num char s1,int n 字串轉化成int型數 ret...

HDU1237 簡單計算器

problem description 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例...