7 4 表示式轉換 25 分 C語言實現

2021-09-30 01:35:59 字數 1474 閱讀 3254

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

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

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

2+3*(7-4)+8/4
2 3 7 4 - * + 8 4 / +
#include

#include

#include

#include

typedef

enum

type;

typedef

struct nodeoperate;

char s[

100]

;char expr[

100]

;char str[

100]

;operate stack[

1000];

intgetlevel

(char ch)

//scanstr函式掃入字串並處理成以空格間隔的形式

intscanstr

(char s,

char e)

else

}

e[cnt]

='\0'

;return cnt;

}//getop傳入以空格間隔的表示式串並逐個以str傳出與返回種類

type getop

(char

*expr,

int*start,

char

*str)

intmain()

else

}else

else

top--;}

else

operate op;

op.data = str[0]

;if(str[0]

=='('

) op.level =-1

;else op.level =

getlevel

(str[0]

);stack[

++top]

= op;}}

}}while

(top >-1

)//輸出棧內剩餘運算子

puts(""

);return0;

}//(-3.14-1.3)*(-1)+3.1-4+7/4.1

//(2.71828+(-2.1+6.7))-3.2/(+6700+(-1))

2.33 -4.231 * + 1.2 - 24 6.01 2 / / -

1.3 - -1 * 3.1 + 4 - 7 4.1 / +

-2.1 6.7 + + 3.2 6700 -1 + / -

7 4 表示式轉換 (25 分)

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

表示式轉換 25 分

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

7 4 表示式轉換

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