回覆列表
-
1 # 藍風24
-
2 # 使用者7415111395883
只是吐槽,不負法律責任。
對於四則運算的處理應該屬於 AST演算法 的一個分支,如果不構建詞法分析樹的話,就難以對給定串(不一定是簡單的四則運算)進行優先順序處理。然而居然能夠說出“不用堆疊”之類的話,看樣子樓主是基本不會什麼資料結構了,即使這樣,還奢望能夠寫出四則運算處理。。然而語言略微有些偏激了。簡而言之,處理四則運算,考慮優先順序規則最簡單的方法是堆疊(不考慮優先順序的話從左到右掃一遍也是可以的),如果要複雜的方法也行,只是連堆疊都不想用的人,估計理解不了那些複雜方法。最後一提,如果可以使用資料結構(如棧啊,佇列啊)的話,追問可以得到原始碼,否則請勿回覆,並建議主動關閉問題。
#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!="\0")
{
if((*c>="0" && *c<="9") || *c=="+" ||
*c=="-" || *c=="*" || *c=="/" ||
*c=="." || *c=="(" || *c==")" )
{
}
else
{
printf("input error, there have the char not the math expression char!\n");
return 0;
}
if(*c=="(")
k++;
else if(*c==")")
k--;
c++;
}
if(k!=0)
{
printf("input error, there is not have correct bracket "()"!\n");
return 0;
}
return 1;
}