華為機試簡單四則運算

2021-06-19 11:51:44 字數 2410 閱讀 8769

簡單四則運算

•問題描述: 

輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值

注: 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 除法用整數除法,即僅保留除法...