字首表示式,是一種對計算機來言特別好處理的表示式,為什麼?
以下為計算機自己的表達 請自行編譯:
#includeusing namespace std;
int main()
聽到這裡你估計會神馬!!!,沒錯其實計算機本身就是以"字首表示式"處理的.什麼是中綴?先賣個關子,那麼字首表示式怎麼使用?請看下節分曉!!!
規則如下所示:
對字首表示式求值,要從右至左掃瞄表示式,首先從右邊第乙個字元開始判斷,若當前字元是數字則一直到數字串的末尾再記錄下來,若為運算子,則將右邊離得最近的兩個「數字串」作相應運算,然後以此作為乙個新的「數字串」並記錄下來;掃瞄到表示式最左端時掃瞄結束,最後運算的值即為表示式的值。
例如:對字首表示式「- 1 + 2 3」求值,掃瞄到3時,記錄下這個數字串,掃瞄到2時,記錄下這個數字串,當掃瞄到+時,將+右移做相鄰兩數字串的運算子,記為2+3,結果為5,記錄下5這個新數字串,然後繼續向左掃瞄,掃瞄到1時,記錄下這個數字串,掃瞄到-時,將-右移做相鄰兩數字串的運算子,記為1-5,結果為-4,此時關於這個表示式的全部運算已完成,故表示式的值為-4。
比如說17屆noip初賽的選擇題第九題:
字首表示式:+3*2+5 12的值
a:23 b:25 c:37 d:65
答案:c
解析:這道題目化成中綴就是:(3+2)*5+12.怎麼化呢.休息一下馬上回來。估計你會這樣
好了
#includeusing namespace std;
#define maxsize 99
char calc[maxsize],expr[maxsize];
int i,t;
struct
sym;
struct
num;
double ston(char x,int *p)
if(x[j]!='.')
}else
if(x[j]=='.')
for(i=j+1;i<=*p;i++)}}
*p=j;
if(x[*p]=='-') return(-(n+m));
return(n+m);
}void initstack()
void sympush()
else
}void numpush()
num.top--;}}
else
}int main(void)
while(i>=0)
if((i>=0)&&((i==0&&calc[i]!='(')||(calc[i]=='+'||calc[i]=='-')&&!(calc[i-1]>='0'&&calc[i-1]<='9')&&calc[i-1]!=')')) goto loop2;
expr[++t]=' ';
}else if(calc[i]==')')
else if(calc[i]=='(')
sym.data[sym.top--]='\0';
i--;
}else if(calc[i]=='+'||calc[i]=='-')
sympush();
}else if(calc[i]=='*'||calc[i]=='/')
sympush();
}else if(calc[i]=='^')
else
}while(sym.top>=0)
expr[++t]=sym.data[++sym.top]='\0';
for(i=0;i<=(t-2)/2;i++)
printf("字首表示式:%s\n",expr);
for(i=t-2;i>=0;i--)
else
}printf("運算結果為:%g\n",num.data[0]);
printf("continue(y/n)?");
ch=getchar();
switch(ch)
case 'n':
default :exit(0);
}getchar();
return(0);
}
中綴表示式 字首表示式 字尾表示式
中綴表示式 中綴記法 中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。...
中綴表示式 字尾表示式 字首表示式
正如我們常常潛意識認為我們所說的數字都是十進位制,對於數字的其他進製感覺不正確一樣,其實只是我們不熟悉而已,其他進製其實也不過就是一種對資料的表達方式而已。對於我們的表示式也是一樣。eg 表示式2 3 5 7 我們上面所看到的也就是我們平時常用的書寫表示式的方式就是我們所謂的 中綴表示式 字首表示式...
字首表示式 中綴表示式 字尾表示式。
表示式 就是式子。是由數字 算符 數字分組符號 自由量和約束量組成的。人們一般習慣寫出來的式子,叫做中綴表示式。因為在計算機中,不方便表達 數字分組符號。所以 波蘭人發明了一種把去符號化的表示式。字首表示式 字首表示式 沒有括號,算符在前 數字在後。波蘭數學家發明,為了紀念,又叫做波蘭式。跟其對應,...