1. c語言作業,計算三個數字間的加減乘除,三個數字兩個運算符兩個括弧,考慮優先順序
所謂後綴表達式,就是將a @ b寫成 a b @
其中前者是我們日常生活中的中綴表達式,後面的就是後綴表達式。
例如7*8 化為 7 8 *
例如6-9 化為 6 9 -
例如5*(3+2),化成後綴表達式就是5 3 2 + *
可知後綴表達式無括弧。
然後依次掃描符號,數字就直接進棧,遇到運算符就將前兩個數字出棧、運算後結果再進棧:
例如5 3 2 + *
掃描5——>5
掃描3——>5 3
掃描2——>5 3 2
掃描+——>5 5
掃描*——>25
所以你現在要解決的問題是如何將中綴表達式轉化成後綴表達式。
這個依然是通過棧來實現。
從左到右掃描,遇到數字直接輸出,遇到符號比較優先順序進棧或輸出(優先順序大的進棧,小的或相等的直接輸出。其中左括弧優先順序大於乘除大於加減),遇到左括弧則進棧,遇到右括弧則將棧內左括弧之內的符號都輸出,遇到末尾就將棧內的所有符號都輸出。
例如5*(3+2)
掃描5 直接輸出
掃描* 進棧(棧內:*)
掃描( 進棧(站內:* ()
掃描3 直接輸出
掃描+ +的優先順序小於(的優先順序,進棧,(棧內:* ( +)
掃描2 直接輸出
掃描) 將站內(之前的全部輸出,即輸出了+
掃描到末尾,將棧內所有東西全部輸出,即輸出了*
綜上,輸出了5 3 2 + *
你可以看這個鏈接http://..com/question/552455212079542532.html?oldq=1
也是我回答的
2. C語言中的括弧運算
理論上來說
增加括弧只會增加編譯的時間 並且對運行的時間是沒有差別的
也就是增加了把你從c/c++代碼變成exe的時間,但是不會影響exe運行的時間
而且 增加一兩個括弧 對於計算機編譯時間的影響是微乎其微的
計算機一秒計算數量以億算 怎麼會差這一個括弧呢
關於代碼運行效率 更應該注意的是演算法,而不是這些語句 那個才能從本質上提高程序運行效率
多行的代碼 運行效率就不一定比單行的要低
作為源代碼重要的一是演算法 二是可讀性 增加括弧和增加有必要的換行不但不會降低運行效率,反而會使代碼更加容易理解 減少歧義的產生
3. 用簡單的C語言實現帶括弧的四則運算
#include<stdio.h> /*庫文件包含*/
#include<string.h> /*用於字元串操作*/
#include<stdlib.h> /*用於exit函數*/
/**************************************************************************
int check(char *c)
輸入參數:
char *c: 輸入的字元串
返回參數:
0:字元串中有不符合規定的字元
1: 字元串字元符合規定,沒有不符合規定的字元.
功能:
檢查字元串中有否除了 0-9, +,-,*,/,(,),之外的其他字元,
如果有,則返回0, 表示出現錯誤。
若沒有,則返回1,表式字元串符合規定。
**************************************************************************/
int check(char *c)
{
int k=0;
while(*c!='