C語言參考程式 無符號一位整數的四則運算

2022-03-08 14:02:31 字數 1404 閱讀 9926

題目:輸入乙個無符號的一位整數的四則運算表示式,輸出其結果。例如輸入:1+3*6-2,則輸出:17

分析:因為不涉及到括號,只是簡單的四則運算,我的想法是如果有乘除法先計算,沒有的話就按照加減法從左到右的順序進行計算。在開始的時候,首先檢查是否有乘除法運算子,有的話就取出前後兩個運算元進行計算,將結果儲存起來。沒有的話就將加減運算子先存起來。

主要過程:

1、輸入的是乙個四則運算的表示式,在計算機中按照字串的形式儲存。資料和運算子需要分開處理。

2、引入乙個整型的陣列,其大小為字串長度加一,加一是為了方便整型陣列判斷結束。

3、對表示式字串迴圈進行字元判斷,如果是數字,則將陣列存入引入的整型陣列,如果不是則分兩種情況:(1)是乘法或者是除法運算子,那就將整型陣列中當前的最新資料取出,將表示式字串當前位置的下乙個位置的數字取出,進行乘法計算,將計算所得的存放到整型陣列當前位置。(即覆蓋掉第乙個運算元的位置)。(2)是加法或者是減法,分陣列和運算子分別存入到整型陣列中。

4、第3步完成以後,整型陣列中存放的只是關於加減法運算的表示式。此時就可以從到右進行運算。取出操作符,通過操作符的位置取出兩個運算元,保證每次計算後的結果存放到整型陣列的第乙個位置處。整個計算結果後,整型陣列第乙個位置是最終的計算結果。

完整的c語言程式如下所示:

1 #include 2 #include 

3 #include 4

#define len 100 //

假設表示式的最大長度為1005//

計算表示式的函式宣告

6int caculate(char*exp);

7int

main()817

//釋放記憶體空間

18free(expression);

19return0;

20}21int caculate(char*exp)

2248

else

4955 p++;56}

57//

此時只做加減法,每次將計算的結果儲存在datas的第乙個位置處

58for( ptemp=datas;ptemp!=pnext;++ptemp)

5972}73

//最終的計算結果儲存在datas的第乙個位置

74 result = *datas;

75//

釋放記憶體空間

76free(datas);

77return

result;

78 }

程式測試結果如下:

C語言位操作 判斷整數的符號

關於衡量計算操作的方法 當為演算法統計操作的數量的時候,所有的c運算子被認為是一樣的操作。中間過程不被寫入隨機儲存器 ram 而不被計算,當然,這種運算元的計算方法,只是作為那些接近機器指令和cpu執行時間的服務。所有的操作被假設成花相同的執行時間,事實上是不正確的。有很多不同的因素決定乙個系統能多...

C語言 輸出乙個整數的每一位。

此題的解決思路為 使用函式的遞迴呼叫來實現。例如 我們要列印1234的每一位,我們可以將此問題化小,定義乙個print函式。第一步在print函式裡列印123 4,第二步列印12 3 4,第三步列印1 2 3 4,不斷的遞迴呼叫,直到這個數不在大於9。並且利用if函式判斷,若大於9則將1234除以1...

(C語言)順序逆序輸出整數的每一位並列印整數字數

問題描述 輸入乙個整數,順序逆序輸出輸出整數的每一位,並輸出整數的位數。實現 本 用的都是最基本的c語言知識,適合初學者 includeint main 讓輸入的數先模10,再整除10,同時記錄位數,如123 一次迴圈後模10輸出個位3,除以10得到12,count 1 二次迴圈後模10輸出十位2,...