PTA - 简单计算器
生活随笔
收集整理的這篇文章主要介紹了
PTA - 简单计算器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
習題6-7 簡單計算器 (20分)
模擬簡單運算器的工作。假設計算器只能進行加減乘除運算,運算數和結果都是整數,四種運算符的優先級相同,按從左到右的順序計算。
輸入格式:
輸入在一行中給出一個四則運算算式,沒有空格,且至少有一個操作數。遇等號”=”說明輸入結束。
輸出格式:
在一行中輸出算式的運算結果,或者如果除法分母為0或有非法運算符,則輸出錯誤信息“ERROR”。
輸入樣例:
1+2*10-10/2=輸出樣例:
10?
?
我起初的錯誤思路:想要讀成字符數組,然后以2為步長進行遍歷。后發現明顯瑕疵,即有的整數并不是1位數,可能是2位甚至3位,那將給我的字符光標移動帶來巨大困擾。而且求該數還會用到循環,較為麻煩。
收獲與感悟:從網上研究了一下大佬的代碼。原來我很難操作的運算整數只需要scanf (%d),這才有所醒悟,像這樣挨在一起的輸入,并不需要考慮全記下來在運算,有種“走一步看一步”的感覺。這里讀入%d,在緩存區光標就會從頭一直讀(可能讀的位數達到數據要求也會停止?我不太清楚),直至不符合要求,即讀到了字符,就會停止。
?
下面附上代碼:
?
#include<stdio.h> int main() {int a,b,flag=0;char op;scanf("%d",&a);while(1){scanf("%c",&op);if(op =='='){break;}scanf("%d",&b);switch(op){case '+':a=a+b;break;case '-':a=a-b;break;case '*':a=a*b;break;case '/':if(b==0) flag = 1;else a=a/b; break;default: flag = 1; }if(flag==1){break;}}if(flag==1){printf("ERROR");}else{printf("%d",a);}return 0; }?
總結
以上是生活随笔為你收集整理的PTA - 简单计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么查看自由幻想服务器返回的信息,自由幻
- 下一篇: sql字符串截取oracle,SQL S