PTA - 简单计算器
習(xí)題6-7 簡(jiǎn)單計(jì)算器 (20分)
模擬簡(jiǎn)單運(yùn)算器的工作。假設(shè)計(jì)算器只能進(jìn)行加減乘除運(yùn)算,運(yùn)算數(shù)和結(jié)果都是整數(shù),四種運(yùn)算符的優(yōu)先級(jí)相同,按從左到右的順序計(jì)算。
輸入格式:
輸入在一行中給出一個(gè)四則運(yùn)算算式,沒(méi)有空格,且至少有一個(gè)操作數(shù)。遇等號(hào)”=”說(shuō)明輸入結(jié)束。
輸出格式:
在一行中輸出算式的運(yùn)算結(jié)果,或者如果除法分母為0或有非法運(yùn)算符,則輸出錯(cuò)誤信息“ERROR”。
輸入樣例:
1+2*10-10/2=輸出樣例:
10?
?
我起初的錯(cuò)誤思路:想要讀成字符數(shù)組,然后以2為步長(zhǎng)進(jìn)行遍歷。后發(fā)現(xiàn)明顯瑕疵,即有的整數(shù)并不是1位數(shù),可能是2位甚至3位,那將給我的字符光標(biāo)移動(dòng)帶來(lái)巨大困擾。而且求該數(shù)還會(huì)用到循環(huán),較為麻煩。
收獲與感悟:從網(wǎng)上研究了一下大佬的代碼。原來(lái)我很難操作的運(yùn)算整數(shù)只需要scanf (%d),這才有所醒悟,像這樣挨在一起的輸入,并不需要考慮全記下來(lái)在運(yùn)算,有種“走一步看一步”的感覺(jué)。這里讀入%d,在緩存區(qū)光標(biāo)就會(huì)從頭一直讀(可能讀的位數(shù)達(dá)到數(shù)據(jù)要求也會(huì)停止?我不太清楚),直至不符合要求,即讀到了字符,就會(huì)停止。
?
下面附上代碼:
?
#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; }?
總結(jié)
以上是生活随笔為你收集整理的PTA - 简单计算器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么查看自由幻想服务器返回的信息,自由幻
- 下一篇: 理论+实战,一文详解最常使用的10个聚类