Openjudge-NOI題庫-簡單算術表達式求值


題目描述 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM