東華oj 高階題第92題 表示式求值

2021-10-04 07:34:02 字數 1429 閱讀 2996

92 表示式求值

問題描述 :

以字串形式輸入僅有整數和加減(正負)號構成的表示式,輸出該表示式的值。

輸入說明 :

標準輸入裝置中有多組測試資料,每組輸入資料由一行組成,輸入僅有整數和加減(正負)號構成的表示式(但是表示式可以插入空格)。

輸出說明 :

依次輸出從標準輸入裝置中讀入的每一組測試資料對應的結果,輸出一行,輸出該表示式的值。所有資料前後沒有多餘的空格,兩組資料之間也沒有多餘的空行。

輸入範例 :

3+ 4+ 5+6

0+1輸出範例 :181

/*

t92 表示式求值

本地執行時沒問題的,可是oj上超時,查到原因是if (op == 『\n』) break;這條語句在oj中沒有奏效,那麼在oj中一行的結束怎麼判斷呢?

害,試試其他方法:

/*

t92 表示式求值

演算法概述:按照讀運算子、讀數字、讀運算子、讀數字……這樣的順序處理,

每處理一次按照運算子的正負計算一次

*/#include

#include

#define max_size 1000

intmain()

res = num;

continue;}

preop = exp[i++];

// 讀運算子

while

(exp[i]

==' '

)// 忽略空格

i++;

num =0;

while

(exp[i]

>=

'0'&& exp[i]

<=

'9')

if(preop ==

'+')

res +

= num;

else

res -

= num;

}printf

("%d\n"

, res);}

return0;

}

ac了,不過這裡有兩個坑:

輸入字串判斷eof不能用gets(exp) != eof,直接用gets(exp)就行

scanf("%s", exp);這個碰到空格就算讀取完成了,如果需要讀取一行包括空格的,那麼需要改為gets(exp)

ps:字串事兒可真多……

東華oj 高階題第11題

11 abc數字 問題描述 明明的爸爸是一位著名的數學家同時也是一位著名的數學啟蒙老師。他經常出一些簡單而有趣的數學題目來給剛剛接觸數學的小朋友做,培養他們對數學的興趣。一天,明明的爸爸想到了這樣乙個題目。如果有a b c三個1位的正整數,那麼按以下的方法構成2個三位數 第一種方法是a為百位,b為十...

東華oj 高階題第21題

21 回文質數 問題描述 因為151既是乙個質數又是乙個回文數 從左到右和從右到左是看一樣的 所以 151 號是回文質數。寫乙個程式來找出範圍 a,b 5 a b 100,000 間的所有回文質數 輸入說明 僅 1 行 二個整數 a 和 b 5 a b 100,000 輸出說明 輸出乙個回文質數的列...

東華oj 高階題第31題

31 最高頻率 問題描述 明明的爸爸是一位著名的數學家。他在明明很小的時候就發現明明有過人的數學天賦,因此有意培養他對數學的興趣。一次,明明的爸爸和明明玩起了乙個數字遊戲,這個遊戲的名字叫 最高頻率 在遊戲中,明明的爸爸要求明明在一串數字中,找出出現次數最多的那個數字,如果有多個數字出現的次數一樣,...