7 4 表示式轉換 (25 分)

2021-08-28 17:53:59 字數 1702 閱讀 8309

7-4 表示式轉換 (25 分)

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

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

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

2+3*(7-4)+8/4
2 3 7 4 - * + 8 4 / +
這個題,真他媽的坑!!!!

坑點:1.有個位以上的數   123 輸出 123

2.有小數 12.3 輸出 12.3

3.數字前邊有符號  2*(+3) 輸出 -2 3 *      -1--1 輸出 -1 -1 -      -1-+2  輸出 -1 2 +

而且這個題還他媽的乙個資料錯其餘全錯? ****

**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define lowbit(x) (x&(-x))

#define mem(a,b) memset(a,b,sizeof(a))

#define frer() freopen("in.txt","r",stdin);

#define frew() freopen("out.txt","w",stdout);

using namespace std;

const int maxn = 50000 + 7;

struct stacak

void pop()

void push(char e)

bool empty()

char top()

};bool isnum(char c)

bool flag;

void pr()

int main()

for(int i=0;s[i];)

i++;

while(isnum(s[i]))

}else if(s[i-1]=='(')

i++;

while(isnum(s[i]))

}else if(s[i-1]=='+'||s[i-1]=='-'||s[i-1]=='*'||s[i-1]=='/')

i++;

while(isnum(s[i]))

}else

s.push(s[i]);

i++;}}

else if(s[i]=='*'||s[i]=='/')

s.push(s[i]);

i++;

}else if('0'<=s[i]&&s[i]<='9')

}else if(s[i]=='(')else if(s[i]==')')

s.pop();

i++;}}

while(!s.empty())

printf("\n");

}

表示式轉換 25 分

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

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

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

7 4 表示式轉換

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