題目
字首式計算
時間限制:1000ms | 記憶體限制:65535kb 難度:3
描述先說明一下什麼是中綴式:
如2+(3+4)*5這種我們最常見的式子就是中綴式。
而把中綴式按運算順序加上括號就是:(2+((3+4)*5))
然後把運算子寫到括號前面就是+(2 *( +(3 4) 5) )
把括號去掉就是:+ 2 * + 3 4 5
最後這個式子就是該表示式的字首表示。
給你乙個字首表示式,請你計算出該字首式的值。
比如:+ 2 * + 3 4 5的值就是 37
張云聰心得:這個厲害的**是看同學的,遞迴函式寫的很好,資料的讀入方式也很好。非最後一組資料 結束由遞迴結束確定,最後一組資料結束由eof決定。
atof()函式:double atof(str);將str指向的字串轉換成雙精度浮點值。
**:#include
#include//呼叫atof()函式的標頭檔案
double operate();
int main()
while(1)
printf("%.2f\n", operate());//保留兩位小數
return 0;
double operate()//遞迴函式
char a[1];
if(scanf("%s",a)!=eof)//到檔案結束時,停止輸入
switch(a[0])//如果是運算子
case'+':
return operate() + operate();
case'-':
return operate() - operate();
case'*':
return operate() * operate();
case'/':
return operate() / operate();
default://如果是數字,用atof()函式轉換成,把數字轉換成雙精度浮點值
return atof(a);
else
exit(0);
ac情況:
輸入有多組測試資料,每組測試資料佔一行,任意兩個操作符之間,任意兩個運算元之間,運算元與操作符之間都有乙個空格。輸入的兩個運算元可能是小數,資料保證輸入的數都是正數,並且都小於10,運算元數目不超過500。
以eof為輸入結束的標誌。
輸出對每組資料,輸出該字首表示式的值。輸出結果保留兩位小數。
樣例輸入
+ 2 * + 3 4 5
+ 5.1 / 3 7
樣例輸出
37.00
5.53
字首式計算
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 先說明一下什麼是中綴式 如2 3 4 5這種我們最常見的式子就是中綴式。而把中綴式按運算順序加上括號就是 2 3 4 5 然後把運算子寫到括號前面就是 2 3 4 5 把括號去掉就是 2 3 4 5 最後這個式子就是該表示式的字...
字首式計算
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 先說明一下什麼是中綴式 如2 3 4 5這種我們最常見的式子就是中綴式。而把中綴式按運算順序加上括號就是 2 3 4 5 然後把運算子寫到括號前面就是 2 3 4 5 把括號去掉就是 2 3 4 5 最後這個式子就是該表示式的字...
字首式計算
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 先說明一下什麼是中綴式 如2 3 4 5這種我們最常見的式子就是中綴式。而把中綴式按運算順序加上括號就是 2 3 4 5 然後把運算子寫到括號前面就是 2 3 4 5 把括號去掉就是 2 3 4 5 最後這個式子就是該表示式的字...