C 字尾表示式轉中綴表示式

時間 2021-07-03 23:19:16

1樓:匿名使用者

我公司使用的編碼規範,不方便發太多,你借鑑一下吧【規則 6-2】在表示式中使用括號,使表示式的運算順序更清晰。由於將運算子的優先順序與結合律熟記是比較困難的,為了防止產生歧義並提高可讀性,即使不加括號時運算順序不會改變,也應當用括號確定表示式的操作順序。正例:

if (((iyear % 4 == 0) && (iyear % 100 != 0)) || (iyear % 400 == 0)) 反例:if (iyear % 4 == 0 && iyear % 100 !

= 0 || iyear % 400 == 0) 【規則 6-3】避免表示式中的附加功能,不要編寫太複雜的複合表示式。正例:aivar[1] = aivar[2] + aivar[3];aivar[4]++;iresult = aivar[1] + aivar[4];aivar[3]++; 反例:

iresult = (aivar[1] = aivar[2] + aivar[3]++) + ++aivar[4] ;

2樓:匿名使用者

#include using namespace std; #define maxsize 99 void trans(char str,char exp) op;

char ch;

int i = 0, t = 0;

op.top = -1;

ch = str[i];

i++;

while (ch != '\0')

op.top--;

break;

case'+':

case'-':

while (op.top != -1 && op.data[op.top] != '(')

op.top++;

op.data[op.top] = ch;

break;

case'*':

case'/':

while (op.top == '/' || op.top == '*')

op.top++;

op.data[op.top] = ch;

break;

case' ':

break;

default:

while (ch >= '0' && ch <= '9')

i--;

exp[t] = '#';

t++;

}ch = str[i];

i++;

}while (op.top != -1)

exp[t] = '\0'; }

float compvalue(char exp) st;

float d;

char ch;

int t = 0;

st.top = -1;

ch = exp[t];

t++;

while (ch != '\0')

st.top--;

break;

default:

;d = 0;

while (ch >= '0' && ch <= '9')

st.top++;

st.data[st.top] = d;

}ch = exp[t];

t++;

}return st.data[st.top]; } int main()

c正規表示式

轉義字元 可接收字元 不可接受字元 匹配前後表示式 分組 連字元 0次或n次 1次或n次 0次或一次 起始字元 結束字元 只能輸入n個字元 至少輸入n個字元 輸入n到m個字元 匹配任何字元除 n 換行字元 d 匹配當個數字 0 9 d 非數字 w 匹配 0 9a za z 第二體 就是一個一個分析就...

表示式求值

從演算法來說,要考慮中綴的運算子優先順序,括號等,可以使用簡單語法制導翻譯,去看編譯原理書吧,從資料結構來說,可以使用二元樹和棧。使用二元樹就是先建立表示式的樹,然後後根遍歷即可。難點在建立樹。使用棧的演算法也很多,說個好想的。假設表示式的字元來自輸入流in,建立棧a存放運算子,b存放結果,從in讀...

C語言的一些表示式,求c語言表示式大全

是給leap 這個物件賦值,賦的值是一個布林型的變數 可以用括號讓表示式明確點。year 4 0 year 100 0 year 400 0 是求餘。意思就是。變數year 對對4整除但是又不對100整除。或者對400整除。本質是求year是否為閏年。如果是閏年,則leap true,否則則leap...