- 題目描述 Description
兩位正整數的簡單算術運算(只考慮整數運算),算術運算為:
+,加法運算;
-,減法運算;
*,乘法運算;
/,整除運算;
%,取余運算。
算術表達式的格式為(運算符前后可能有空格):
運算數 運算符 運算數
- 請輸出相應的結果。
- 輸入輸出格式 Input/output
- 輸入:
- 一行算術表達式。
- 輸出:
- 整型算數運算的結果(結果值不一定為2位數,可能多於2位或少於2位)。
- 輸入輸出樣例 Sample input/output
樣例測試點#1
- 輸入樣例:
- 32+64
- 輸出樣例:
- 96
- 思路:可以先用一個字符串存入這個表達式,分別從前往后,從后往前找數字,從前往后遍歷這個數組,在后面一個字符不為空格的情況下,變為數字,從后往前遍歷這個數組,在前面一個字符不為空格情況下,變為數字,然后再掃描一遍這個數組看看是什么運算符號,最后判斷運算符號輸出結果即可。
- 代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 int n,i; 6 char a[200]; 7 int f=0,l=0; 8 gets(a); 9 for(i=0;i<strlen(a);i++)//首個兩位數 10 { 11 if(a[i]>='0'&&a[i]<='9')//如果是數字 12 { 13 if(a[i+1]>='0'&&a[i+1]<='9')//如果后面那個也是數字 14 { 15 f=(f+a[i]-48)*10;//變為數字往前進一位 16 } 17 else//否則是空格什么的直接存為數字 18 { 19 f=f+a[i]-48; 20 break; 21 } 22 } 23 } 24 for(i=strlen(a);i>0;i--)//第二個兩位數 25 { 26 if(a[i]>='0'&&a[i]<='9')//如果是數字 27 { 28 if(a[i-1]>='0'&&a[i-1]<='9')//如果前面那個也是數字 29 { 30 l=l+a[i]-48; 31 } 32 else//否則是空格什么的直接存為數字 33 { 34 l=l+(a[i]-48)*10;//變為數字往前進一位 35 break; 36 } /* 35+14 */ 37 } 38 } 39 for(i=0;i<strlen(a);i++) 40 { 41 if(a[i]=='+') printf("%d\n",f+l); 42 else if(a[i]=='-') printf("%d\n",f-l); 43 else if(a[i]=='*') printf("%d\n",f*l); 44 else if(a[i]=='/') printf("%d\n",f/l); 45 else if(a[i]=='%') printf("%d\n",f%l); 46 } 47 return 0; 48 }
