用c或c 編寫具有計算器功能的程式,要求一次性輸入一行要求算式,輸入輸出結果,有什麼好的思路

時間 2021-05-14 09:29:43

1樓:自我程式設計

可以用2叉樹寫。

定義表示式結構體型別,比如:

typedef struct yunsuan

ys;根據優先順序解析多運算子的式子,比如2^2+(√4-1)。

從運算順序最低的運算符號開始先找到'+',建立樹頂點結構體,fh='+';father=null;brother=null;left=(2^2)的結構體;right=(√4-1)的結構體;

(2^2)的結構體:fh='^';num1=2;num2=2;father=最頂端的結構體;brother=(√4-1)的結構體;left=新建節點fh置0;right=新建節點fh置0;

(√4-1)的結構體:fh='-';num2=1;father=最頂端的結構體;brother=(2^2)的結構體;left=√4的結構體;right=新建節點fh置0;

√4的結構體:fh='√';num1=4;father=(√4-1)的結構體;brother=null;left=新建節點fh置0;right=null;

依次類推,以上只是說明樹形結構建立。

你解析字串,從運算順序最後的字元開始拆分並建立樹的最頂層節點,然後依次往下建立樹。

最後可以用遞迴函式或迴圈,遍歷樹各節點進行運算。

2樓:匿名使用者

#include

void main()

3樓:蕭兮

捕獲每次輸入的字元,是等號就進行運算,不是就繼續捕獲,然後呼叫一些字串操作的函式對捕獲到的字串進行分析處理,分離出兩個運算元和操作符,最後進行算術運算,得出結果顯示在最後,換行,進行下一輪的捕獲

4樓:

這是作為編譯原理的語法解析練習題,在部落格園搜一下vczh的手寫分析器文章有示例**

5樓:匿名使用者

//這個例子只能進行整數的四則混合運算(不能包含括號)#include

int jisuan(int num1,char op1,int num2) }

int process(int num1,char op1,int num2)

else if('*'==op2 || '/'==op2)else}}

else

return r;

}int main()

請使用物件導向的程式設計方法(c++)實現乙個小型計算器功能,要求輸入2個數值和1個運算子

6樓:楊武威

#include

int main()

return 0;}

使用c++設計方法實現乙個小型計算器功能,要求輸入2個數值和1個運算子,(+、-、×、/),然後計 20

7樓:南塵

定義四個成員函式然後在主函式來判斷符號是不是就可以了呢!或者直接在乙個成員函式裡實現。

8樓:唯愛伊伊

樓上的是vb,別誤導別人

用C語言編寫“背單詞程式”,用C語言編寫如下程式?

董俊錕 include include include struct word 定義一個word的結構體,裡面的兩個成員分別放英語單詞和相應的漢語翻譯 int point 0 統計分數的 int count1 0 測試的次數 void tianjia struct word str 100 int ...

用C 語言編寫程式,遞迴函式,用c 編寫程式用遞迴法計算一個整數的所有數字之和

1 在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。在程式語言中,把直接或間接地呼叫自身的函式稱為遞迴函式。函式的構建通常需要一個函式或者一個過程來完成。2 遞迴函式 是建立...

用C語言編寫2023年曆(急求,用C語言編寫2023年曆(急求!!!)

mfc 和 delphi嗎?你知道這樣沒有意義又很麻煩嗎 沒價值 自己動手修改乙個函式就好了 include include define days 366 struct calendar void createcal struct calendar year 建立2008年日曆 int findw...