簡單計算器 實數計算 先乘除後加減

2021-09-25 05:51:30 字數 1839 閱讀 5323

模擬簡單運算器的工作。實現加減乘除計算表示式輸出正確結果(保留 2 位小數)。

輸入在一行中給出乙個四則運算算式,沒有空格,且至少有乙個運算元。遇等號」=」說明輸入結束。

在一行中輸出算式的運算結果,或者如果除法分母為0或有非法運算子,則輸出錯誤資訊「error」。

1+2*10-10/2=
10
**部分:先乘除後加減(實數計算,結果保留2位小數)

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

/*宣告函式**定義全域性變數*/

void shuru(char *pb); //獲取表示式

void fenzu(double *pa,char *pb,char *pc); //拆分表示式

void youxian(double *pa,char *pb,int n); //處理優先順序計算

void zhcjs(double *pa,char *pb,char *pc,int n); //最終計算及輸出

int count=0; //定義全域性變數 count 用來記錄 計算次數

menu_0() //提示資訊

int main()

,n; char b[100]=,c[100]=,y;

y=getchar();

if(y=='e') exit(0); //獲取字元,'e' 則退出

fflush(stdin); //清除快取,準備接收表示式

shuru(b);

fenzu(a,b,c);

n=strlen(c);

youxian(a,c,n);

zhcjs(a,b,c,n); }

/***************** 獲取表示式,存入b **********/

void shuru(char *pb)

/*****************將數字和計算符號分開儲存到 a陣列 和 c 字串 **********/

void fenzu(double *pa,char *pb,char *pc)

else//不是數字字元 則將已經得到的數字儲存在 a 陣列中,非數字字元儲存在 c 字串中

}*(pa+j)=m; //得到的最後乙個數字儲存到 a 陣列中

}/*****************處理優先計算 '*' '/' *******************/

//將乘除運算的結果儲存到運算符號之後的數值所在空間,前面的數值清零 ,符號位賦值 '+、-'

void youxian(double *pa,char *pc,int n)

if(*(pc+i)=='/'&&*(pa+i+1)!=0) //除數不為 『0』 ,除法計算

} }void zhcjs(double *pa, char *pb, char *pc, int n)

else if(*(pc+i)=='+') m+=*(pa+i+1); //加法計算

else if(*(pc+i)=='-') m-=*(pa+i+1); //沒減法計算

else if(*(pc+i)=='*') m*=*(pa+i+1); //乘法計算

else if(*(pc+i)=='/'&&*(pa+i+1)!=0) m/=*(pa+i+1); //除數不為 『0』 ,除法計算

else //除數為 『0』 ,或者非法運算子 輸出 "error"

} count++;

fflush(stdin);

main();

}

加減乘除 計算器

二 程式效果說明 程式的很多bug已解決,但還是有一些bug沒有發現,或沒有解決 已發現的bug 1 如果計算過程出現科學計數法 乙個特別小的數除以乙個特別大的數時 就會使程式出錯,進入無限迴圈 2 如果不指定計算資料小數點後的有效位數,程式也會進入死迴圈 下圖是程式計算結果與python計算結果的...

用php簡單實現加減乘除計算器

加減乘除計算器想必大家都有使用過吧,本文為大家介紹下使用php如何實現,下面有個不錯的示例,感興趣的朋友可以參考下 用php實現加減乘除計算器。很簡單哦!如下 unity3d官網 header content type text html charset utf 8 session start nu...

codeup 模擬加減乘除 問題 A 簡單計算器

題目描述 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。輸入 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。輸出 對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位...