模擬簡單運算器的工作。實現加減乘除計算表示式輸出正確結果(保留 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位...