您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“怎么用C++實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器小功能”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么用C++實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器小功能”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
限制:
1、只能使用分支語(yǔ)句與循環(huán)語(yǔ)句;
2、不能使用數(shù)組和自定義函數(shù);
(即把自己當(dāng)作只學(xué)到分支語(yǔ)句和循環(huán)語(yǔ)句的初學(xué)者)
計(jì)算器要求:
1、可以進(jìn)行簡(jiǎn)單的加、減、乘、除四則運(yùn)算;
2、如出現(xiàn)多個(gè)運(yùn)算符號(hào),必須考慮先乘除后加減的運(yùn)算順序;
3、不需要括號(hào)運(yùn)算符;
一個(gè)比較簡(jiǎn)單的程序,但加上了上述的限制后,讓我耗費(fèi)了很大的功夫。
源代碼如下:
#include<iostream> using namespace std; int main() { //首先要聲明變量: double a0,a1,a2;//為了處理多位小數(shù)的運(yùn)算,這里使用浮點(diǎn)型; char ca1,ca2;//字符型用于儲(chǔ)存運(yùn)算符號(hào); //先考慮簡(jiǎn)單的情況————輸入一個(gè)數(shù)后直接輸入等號(hào)并輸出結(jié)果; cin>>a0>>ca1; if(ca1=='=') cout<<a0<<endl; else { //若輸入的第一個(gè)運(yùn)算符不是等號(hào),則可以繼續(xù)輸入; cin>>a1>>ca2; while(1)//此處進(jìn)入第一個(gè)循環(huán),用于處理僅有加減的運(yùn)算; { if(ca1=='=') {cout<<a0<<endl;break;} //用于跳出循環(huán)并輸出結(jié)果; switch(ca2)//判斷第二個(gè)輸入的運(yùn)算符; { case '=': //如果第二個(gè)運(yùn)算符是等號(hào),則可直接進(jìn)行前兩個(gè)數(shù)的運(yùn)算; switch(ca1) { //將前兩個(gè)數(shù)的運(yùn)算結(jié)果存在第一個(gè)變量a0中,下同; case '+': a0=a0+a1;break; case '-': a0=a0-a1;break; case '*': a0=a0*a1;break; case '/': a0=a0/a1; } ca1=ca2;break;//將ca2的值賦給ca1后跳出switch; //由于跳出switch后就會(huì)回到循環(huán)的第一句,即可通過(guò)ca1的值判斷是否繼續(xù)循環(huán),下同; case '+': case '-': //如果第二個(gè)運(yùn)算符是加號(hào)或減號(hào),也可以直接進(jìn)行前兩個(gè)數(shù)的運(yùn)算; switch(ca1) { case '+': a0=a0+a1;break; case '-': a0=a0-a1;break; case '*': a0=a0*a1;break; case '/': a0=a0/a1; } ca1=ca2;cin>>a1>>ca2;break;//由于ca2賦給ca1的值不是等號(hào),因此會(huì)繼續(xù)循環(huán),所以必須要更新a1與ca2的值; case '*': case '/': //如果第二個(gè)運(yùn)算符是乘號(hào)或除號(hào),則要進(jìn)入第二個(gè)循環(huán)處理連乘或連除的問(wèn)題; while(1) { //連乘或連除; switch(ca2) { //此處要對(duì)第三個(gè)變量進(jìn)行賦值,并將a1與a2的乘除結(jié)果存入a1中; case '*':cin>>a2;a1=a1*a2;cin>>ca2;break; case '/':cin>>a2;a1=a1/a2;cin>>ca2; //還要對(duì)ca2的值進(jìn)行更新,用于處理接下來(lái)運(yùn)算; } if(ca2=='=')//若ca2的值變?yōu)榈忍?hào); { switch(ca1) { //將之前乘除的結(jié)果a1與之前的a0進(jìn)行加減運(yùn)算,并將結(jié)果存入a0中; case '+': a0=a0+a1;break; case '-': a0=a0-a1;break; } ca1=ca2; break;//這也是跳出第二個(gè)循環(huán)的條件,且ca2為加號(hào)或減號(hào)時(shí)也要跳出循環(huán); } if(ca2=='+'||ca2=='-') { switch(ca1) { case '+': a0=a0+a1;break; case '-': a0=a0-a1;break; } ca1=ca2;cin>>a1>>ca2; break; } } } } } return 0; }
注:
1、當(dāng)ca2的值為加號(hào)或減號(hào)或等號(hào)時(shí),就必須要出現(xiàn)ca2對(duì)ca1的賦值,不然沒(méi)有辦法處理接下來(lái)的運(yùn)算或者跳出循環(huán)輸出結(jié)果;
2、a0的作用是將加減的結(jié)果儲(chǔ)存下來(lái),而a1的作用是儲(chǔ)存乘除的結(jié)果,考慮到運(yùn)算順序,因此最后的輸出只能是a0;
運(yùn)行結(jié)果:
用計(jì)算器驗(yàn)證一下結(jié)果:
結(jié)果正確!
讀到這里,這篇“怎么用C++實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器小功能”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。