5 20 表示式轉換 25分

2021-07-22 05:01:14 字數 1613 閱讀 6701

算術表示式有字首表示法、中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。

輸入格式:

輸入在一行中給出不含空格的中綴表示式,可包含+、-、*、\以及左右括號( ),表示式不超過20個字元。

輸出格式:

在一行中輸出轉換後的字尾表示式,要求不同物件(運算數、運算符號)之間以空格分隔,但結尾不得有多餘空格。

輸入樣例:

2+3*(7-4)+8/4
輸出樣例:

2 3 7 4 - * + 8 4 / +
思路

利用堆疊的先進後出特性,結合算術優先順序情況進行程式設計

訪問 pta-測驗

#include 

#include

#include

/* 評測結果

時間 結果 得分 題目 編譯器 用時(ms) 記憶體(mb) 使用者

2016-08-29 10:27 答案正確 25 5-20 gcc 2 1 569985011

測試點結果

測試點 結果 得分/滿分 用時(ms) 記憶體(mb)

測試點1 答案正確 13/13 2 1

測試點2 答案正確 5/5 1 1

測試點3 答案正確 4/4 1 1

測試點4 答案正確 2/2 1 1

測試點5 答案正確 1/1 1 1

檢視***/

/*對正負號的判定:如果存在連續的非數值符號,且最後乙個是+-,那麼可以判定該號為正負

棧內不會出現),...*/

void mainfum(char*,int);

int compare(char,char);

int isnum(char);

int zhengfu(char);

int main()

int isnum(char c)

int zhengfu(char c)

int compare(char a,char b)

}}void mainfum(char*a,int lenth)

printf("%c",a[i]);

} else

if(zhengfu(a[i])&&(i?!isnum(a[i-1])&&a[i-1]!=')':1))

printf("%c",a[i]);//正號不輸出

}} else

else else

break;

}stack[flag++]=a[i];

}} else

stack[flag++]=a[i];

for(int j=0; jif(stack[j]!='(') }}

while(flag)

}

5 20 表示式轉換 25分

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...

5 20 表示式轉換 25分

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...

表示式轉換 25 分

首先規定優先順序,括號為最高優先順序,乘號或除號為次優先順序,加或減號為最低優先順序,至於數字,碰到就直接輸出即可。既然是數字,就有小數,整數,正數,負數之分,還有關於二元運算子的輸出,在括號內的二元運算子優先輸出,優先順序高的優先輸出 當然括號不算啊 根據題意,在輸出時可分為以下幾種情況。incl...