9101:字尾表示式計算
阿新 • • 發佈:2018-12-30
Problem Description
規則如下:式中不包含括號,運算子放在兩個運算元的後面,所有的計算按運算子出現的順序,嚴格從左向右進行,不再考慮運算子的優先順序,如:(2 + 1) * 3,在此處即表示為2 1 + 3 *
請程式設計,計算字尾表示式的值。
Input
輸入資料有多組,每組資料佔一行,代表一個字尾表示式,每行不超過50個字元;
每行由多個元素(運算元,運算子,終結符)組成,每兩個元素之間有一個空格;
字尾表示式當中:
運算元:是一整數字符串,長度不超過5;
運算子範圍:+,-,*,/
終結符:#,該符號代表表示式的終結;
假設沒有不規範的字尾表示式。
Output
每組輸出資料佔一行,輸出字尾表示式的計算結果。
Sample Input
2 1 + 3 * # 2 10 3 * + # 7 2 6 9 * + / #
Sample Output
9 32 0.125
Hints
運算元字串轉換為數值儲存時,應定義為double型別; 注意計算結果的輸出格式。
Author
hdf
Recommend
zh
輸入資料怎麼避開數之間的空格,輸入的時候,
而且多資料輸入
scanf("%[^\n]",a);
#include<stdio.h> #include<string.h> #include<ctype.h> int main() { char a[1000]; int i; double b[1000],n,s; scanf("%[^\n]",a); n=strlen(a); int j=-1; for(i=0;i<n;i++) if(a[i]>='0'&&a[i]<='9') { b[++j]=a[i]-'0'; } else if(a[i]=='+') { s=b[j-1]+b[j]; b[--j]=s; } else if(a[i]=='-') { s=b[j-1]-b[j]; b[--j]=s; } else if(a[i]=='*') { s=b[j-1]*b[j]; b[--j]=s; } else if(a[i]=='/') { s=b[j-1]/b[j]; b[--j]=s; } else if(a[i]=='#') printf("%.lf\n",b[0]); return 0; }