簡單計算器

2021-10-02 13:33:27 字數 3231 閱讀 9159

1、scanf函式(包含標頭檔案#include )

scanf函式一般格式為scanf(「%s」,st),但scanf預設回車和空格是輸入不同組之間的間隔和結束符號,所以輸入帶空格,tab或者回車的字串是不可以的。

scanf

(「%[

^c]」,str)

;

其中「c」是乙個具體的字元常量(包括控制字元)。當輸入字串時,字元「c」將被當作當前輸入的結束符。

char st[50]

;scanf

("%[^\n]"

,st)

;// \n作為字串輸入的結束符

cin
#include

cin是c++中最常用的輸入語句,當遇到空格或者回車鍵即停止。

gets()

可以無限讀取,以回車結束讀取,c語言中的函式,在c++中執行會產生bug。在c11標準中已被正式刪除,建議不要用!!!

getline()

#include

若定義變數為string型別,注意不是字元型陣列。則要考慮getline()函式。用法如下:

string st;

getline

(cin,st)

;

cin.get (char str, int maxnum)

cin.get()函式可以接收空格,遇回車結束輸入。

char st[50]

; cin.

get(st,50)

;

cin.getline (char str, int maxnum)

#include

cin.getline()函式可以同cin.get()函式類似,也可接收空格,遇回車結束輸入。

參考部落格

1.設立兩個堆疊,乙個用來儲存運算子,另乙個用來儲存數字。

2.在表示式首尾新增標記運算子,該運算子運算優先順序最低(可以使設定為首部優先順序最低,尾部優先順序次之)。

3.從左至右依次遍歷字串,若遍歷到運算子,則將其與運算子棧棧頂元素

進行比較,若運算子棧棧頂運算子優先順序小於該運算子或者此時運算子棧為(實際上不會為空,存在首部運算子),

則將該運算子壓入堆疊。遍歷字串中下乙個元素。

4.若運算子棧棧頂運算子優先順序大於該運算子,則彈出該棧頂運算子,再從

數字棧中依次彈出兩個棧頂數字,完成彈出的運算子對應的運算得到結果後,再

將該結果壓入數字棧,重複比較此時棧頂運算子與當前遍歷到的運算子優先順序,

視其優先順序大小重複步驟 3 或步驟 4。

5.若遍歷到表示式中的數字,則直接壓入數字棧。

6.若運算子堆疊中僅存有兩個運算子且棧頂元素為我們人為新增的標記運

算符,那麼表示式運算結束,此時數字堆疊中唯一的數字即為表示式的值。

另外由於表示式中的運算元是存入堆疊,故出堆疊順序與原先順序相反

函式返回兩個值

使用pair

**節選

typedef pair<

int,

int> mytype;

mytype getnumber

(string s,

int index)

mytype value =

getnumber

(s, index)

;nums.

push

(value.first)

;

簡單計算器實現**

#include

#include

#include

using

namespace std;

intgetpro

(char function)

else

if(function ==

'+'|| function ==

'-')

else

if(function ==

'a')

else

}double

count

(double a,

double b,

char func)

return0;

}bool

process_stack

(stack<

double

>

& numbers, stack<

char

>

& functions,

char func)

functions.

push

(func)

;return

false;}

typedef pair<

int,

int> mytype;

mytype getnumber

(string s,

int index)

mytype value

(ans, index)

;return value;

}int

main()

while

(!operators.

empty()

) operators.

pop();

operators.

push

('z');

char oper;

double num;

int index =0;

while

(true

)double ans = nums.

top();

nums.

pop();

printf

("%.2f\n"

, ans)

;break;}

oper = s[value.second+1]

; index = value.second +3;

while

(process_stack

(nums, operators, oper))}

}}

簡單計算器

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...

簡單計算器

a 簡單計算器 crawling in process.crawling failed time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 讀入乙個只包含 的非負整數計算表示...

簡單計算器

問題描述 乙個最簡單的計算器,支援 四種運算。僅需考慮輸入輸出為整數的情況,資料和運算結果不會超過int表示的範圍。輸入 輸入只有一行,共有三個引數,其中第1 2個引數為整數,第3個引數為操作符 輸出 輸出只有一行,乙個整數,為運算結果。然而 1.如果出現除數為0的情況,則輸出 divided by...