進擊的C語言 簡單的計算器

2021-09-01 23:04:02 字數 1217 閱讀 9800

程式設計,用來計算使用者輸入的四則運算表示式的值,只含加減乘除,不含括號。

例項解析:

表示式中含有加減乘除,乘除的優先級別比加減高。

我們以鍵盤輸入-3.12 + 2*3.5/4 + 8/2 - 3*6為例來說明演算法。

式子中的2*3.5/4、8/2和3*6要先算,算完之後整個表示式將只有4個資料項,剩下的問題就很簡單了。為此我們可以把整個表示式分成4部分(4塊),塊與塊之間必定是由加減號連線的,每塊中間只有乘除,沒有加減。

實際上,沒有必要先把每塊的值都計算出來,在計算表示式的過程中,每遇到一塊,可以先把這一塊的結果算出來,然後與前面的計算結果進行加減運算,後面塊的值可以在用到的時候再計算。

具體的計算方法是:

程式開始先定義乙個變數result,並初始化為0。

從頭開始處理每一塊:提取乙個資料,如果資料後面是乘(除),則表示該塊計算未結束,繼續提取第二個資料並與第乙個資料進行乘(除)運算,然後再看後面的運算子,如果還是』*』或』/』,則繼續提取資料並進行計算……直到遇到運算子『+』、『-』或空字元為止。

遇到運算子『+』、『-』或空字元,都表示該塊的計算已經結束,可以將計算結果累加到result中了。

重複上面的方法,對每一塊都作這樣的處理,直到表示式結束。result就是最後的結果。

程式**:

#include "stdio.h"

#include "stdlib.h"

float get_num(char **);

int main()

while(*p != 0)

else

else

m /= div;}}

if(*p != '+' && *p != '-' && *p != 0)

result += m; //將上面計算出的某塊的結果累加到result中

if(*p == '+')

else if(*p == '-')

else //遇到空字元,退出迴圈

break;

}printf("the result is %f\n", result);

getch();

return 0;

}float get_num(char **pp) //pp指向p

while(**pp >= '0' && **pp <= '9')

if(**pp == '.')

}return x;

}

進擊的C語言 簡單的計算器(二)

本例項與上例的區別在於表示式中有括號。其實每個括號中的內容都可以看作是乙個單獨的表示式 也可能又帶括號 考慮到這一點,我們可以把程式寫為遞迴呼叫的方式,遇到括號則呼叫自己計算括號中表示式的值。相應的程式 如下 include stdio.h include stdlib.h float get nu...

C 簡單的計算器

實驗目的和要求 1.設計背景 設計擁有簡單的計算功能,方便計算簡單的計算題。方便使用者的使用。2.設計功能 具有一般計算功能,能進行基本的加減乘除運算,還具有求根號,倒數等功能。特點是能進行不同進製的運算和不同進製間的轉換。3.模組分解 該計算器分為3個模組,分別是 textbox 顯示區 顯示數字...

c語言7 21簡單計算器

模擬簡單運算器的工作。假設計算器只能進行加減乘除運算,運算數和結果都是整數,四種運算子的優先順序相同,按從左到右的順序計算。輸入格式 輸入在一行中給出乙個四則運算算式,沒有空格,且至少有乙個運算元。遇等號 說明輸入結束。輸出格式 在一行中輸出算式的運算結果,或者如果除法分母為0或有非法運算子,則輸出...