簡單四則運算
•問題描述:
輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值
注: 1、表示式只含 +, -, *, / 四則運算符,不含括號
2、表示式數值只包含個位整數(0-9),且不會出現0作為除數的情況
3、要考慮加減乘除按通常四則運算規定的計算優先順序
4、除法用整數除法,即僅保留除法運算結果的整數部分。比如8/3=2。輸入表示式保證無0作為除數情況發生
5、輸入字串一定是符合題意合法的表示式,其中只包括數字字元和四則運算符字元,除此之外不含其它任何字元,不會出現計算溢位情況
• 要求實現函式:
int calculate(int len,char *expstr)
【輸入】 int len: 字串長度;
char *expstr: 表示式字串;
【輸出】 無
【返回】 計算結果
• 示例
1) 輸入:char *expstr = 「1+4*5-8/3」
函式返回:19
2) 輸入:char *expstr = 「8/3*3」
函式返回:6
//以下**實現了兩種方法
#include
#include
#include
//這個演算法開闢了額外的空間。
//分析這個問題可以知道,字串長度len是奇數(0不考慮)
//數字的個數是len/2+1,符號的個數為len/2,然後將符號和數字儲存起來
//第一步處理所有的乘除法,此時有乙個特點就是如果幾個數
//連續進行乘除法的時候就需要向前儲存結果(為了方便後面的加減法運算)
//演算法複雜度o(n)
int calculate(int len,char *expstr)
//乘除法處理
for (i=0,j=1;i
if (exp[i]=='*')
j++;
}else if (exp[i]=='/')
j++;}}
//處理加減法
answer=num[0];
for (i=0,j=1;i
return answer;
}int main()
//網上的答案,用棧進行操作
int calculate2(int len,char *expstr)
opstack;
//定義操作符棧
opstack.top = -1;
int i=0;//遍歷字串的下標
int t=0;//當前字尾表示式的長度
char ch = expstr[i];
while (ch!='\0')
opstack.top++;
opstack.opdata[opstack.top] = ch;
break;
case '/':
while (opstack.top != -1 && (opstack.opdata[opstack.top] =='*' || opstack.opdata[opstack.top] =='/') )
opstack.top++;
opstack.opdata[opstack.top] = ch;
break;
default:
expstr[t] = ch;
t++;
break;
}
i++;
ch = expstr[i];
}
while (opstack.top != -1)//將棧中所有的剩餘的運算子出棧
expstr[t]='\0';
struct data;
data.top = -1;
i=0;
ch = expstr[i];
while (ch!='\0')
else if('+' == ch)
else if('-' == ch)
else if('*' == ch)
else if('/' == ch)
int tmp = data.numeric[data.top-1] / data.numeric[data.top];
data.top--;
data.numeric[data.top] = tmp;
}
i++;
ch = expstr[i];
}
return data.numeric[data.top]; }
華為機試 四則運算
題目 四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 3.1 表示式只含 四則運算符,不含括號 3.2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3.3 要考慮加減乘除按通常四則運算規定的計算優先順序 3.4 除法用整數除法,即僅保留除法...
四則運算 華為機試 C C
請實現如下介面 功能 四則運算 輸入 strexpression 字串格式的算術表示式,如 3 2 返回 算術表示式的計算結果 publicstaticintcalculate string strexpression 請實現 return0 約束 pucexpression字串中的有效字元包括 0...
華為機試 四則運算(陣列解決)
題目 四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 3.1 表示式只含 四則運算符,不含括號 3.2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3.3 要考慮加減乘除按通常四則運算規定的計算優先順序 3.4 除法用整數除法,即僅保留除法...