#include "stack.h" //提供棧及其基本操作函式
#include "mymath.h" //提供階乘函式
#include #include #define buffsize 128
#define charsize 10
#define pi 3.141593
#define e 2.718282
#define push_ope_con (stack_top(&operator) == '(' && buff[i] != ')') || (stack_top(&operator) == '[' && buff[i] != ']') || (dif = judge_ope(buff[i]) - judge_ope(stack_top(&operator))) > 1
//運算子壓入棧條件(壓入的符號優先順序大於上乙個符號的優先順序)
#define supple_num if((last != num) && (buff[i] == '+' || buff[i] == '-')) //填充數字0
#define ope_work_con stack_top(&operator) != '(' && stack_top(&operator) != '[' //運算子執行運算條件
#define pop_ope_con1 buff[i] == ')' && stack_top(&operator) == '(' //運算子彈出條件1()
#define pop_ope_con2 buff[i] == ']' && stack_top(&operator) == '[' //運算子彈出條件2
#define clear_dot if(dot == dot) //制空小數點標記符
#define fun_work_con judge_ope(stack_top(&operator)) == fun //函式執行條件
typedef enum status; //各類符合標識及其優先順序
static char buff[buffsize];
static char chars[charsize];
void exit() //-e 退出
status help() //-h 幫助資訊
else
return err;
}void input() //輸入表示式
status judge_type(char c) //判斷字元型別
status judge_ope(char c) //判斷運算子
float ope_work(float x, float y, status jud) //運算子執行
}void dispose_cha(stack *data, stack *ope) //判斷函式和常數
float fun_work(char c, float x) //函式執行
float calculate(float prev) //表示式計算
if(this != cha && last == cha)
else
memset(chars, 0, charsize);
j = 0;
} if(this == num)
else
}else if(dot == dot)
else
}else
push_stack(&data, n);
i++;
} if(this == ope)
else if(ope_work_con)
else
push_stack(&data, n);
}else if(pop_ope_con1)
else if(pop_ope_con2)
}else
else break;
}} if(this == dot)
if(this == err)
last = this; }
printf("\t%f\n", stack_top(&data));
return pop_stack(&data);
}int main()
}}
C語言表示式
逗號表示式逗號表示式 就是用逗號隔開的多個表示式,從左向右依次執行 exp1,exp2,wxp3,wxpn注意 整個表示式的結果是最後乙個表示式的結果。void test 下表引用 函式呼叫和結構成員 1.下表引用符操作符 運算元 乙個陣列名 以後索引值 int arr 10 arr 9 10 有兩...
C語言 表示式計算次序
c語言裡,優先順序和結合性規則告訴我們哪些符號組成乙個意群,同時這些意群內部如何進行計算的次序始終未定義。在表示式 x f g h g 和 h 組成乙個意群進行乘法運算,單兩者的呼叫可能以任何順序次序出現。同理f 呼叫,可能在乘法之前,也可能在乘法之後,也可能在g 和 h 呼叫之間。唯一可以確定的是...
Go語言 表示式
go語言僅有25個保留的關鍵字,下面我們就列舉下這25個關鍵字 break default func inte ce select case defer gomap struct chan else goto package switch const fallthrough ifrange type...