一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 用PHP實現的四則運算表達式計算實現代碼

用PHP實現的四則運算表達式計算實現代碼

2019-12-09 13:50PHP教程網 PHP教程

題目要求:有一個四則運算的字符串表達式,編寫一個函數,計算四則運算的結果

PHP實現: 

復制代碼代碼如下:


<?php 
/** 
* 計算四則運算表達式 
*/ 
error_reporting(E_ALL); 
$exp = '(1+2*(3+5)/4)*(3+(5-4)*2)'; 
$arr_exp = array(); 
for($i=0;$i<strlen($exp);$i++){ 
$arr_exp[] = $exp[$i]; 

$result = calcexp( array_reverse($arr_exp) ); 
echo $exp . '=' . $result; 
function calcexp( $exp ){ 
$arr_n = array(); 
$arr_op = array(); 
while( ($s = array_pop( $exp )) != '' ){ 
if( $s == '(' ){ 
$temp = array(); $quote = 1; $endquote = 0; 
while( ($t = array_pop($exp)) != '' ){ 
if( $t == '(' ){ 
$quote++; 

if( $t == ')' ){ 
$endquote++; 
if( $quote == $endquote ){ 
break; 


array_push($temp, $t); 

$temp = array_reverse($temp); 
array_push($arr_n, calcexp($temp) ); 
}else if( $s == '*' || $s == '/' ){ 
$n2 = array_pop($exp); 
if( $n2 == '(' ){ 
$temp = array(); $quote = 1; $endquote = 0; 
while( ($t = array_pop($exp)) != '' ){ 
if( $t == '(' ){ 
$quote++; 

if( $t == ')' ){ 
$endquote++; 
if( $quote == $endquote ) 
break; 

array_push($temp, $t); 

$temp = array_reverse($temp); 
$n2 = calcexp($temp); 

$op = $s; 
$n1 = array_pop($arr_n); 
$result = operation($n1, $op, $n2); 
array_push($arr_n, $result); 
}elseif( $s == '+' || $s == '-' ){ 
array_push($arr_op, $s); 
}else{ 
array_push($arr_n, $s); 


$n2 = array_pop($arr_n); 
while( ($op = array_pop($arr_op)) != '' ){ 
$n1 = array_pop($arr_n); 
$n2 = operation($n1, $op, $n2); 

return $n2; 

function operation( $n1, $op, $n2 ){ 
switch ($op) { 
case '+': 
return intval($n1) + intval($n2); 
break; 
case '-': 
return intval($n1) - intval($n2); 
break; 
case '*': 
return intval($n1) * intval($n2); 
break; 
case '/': 
return intval($n1) / intval($n2); 
break; 


這個實現方式中使用了兩個堆棧,一個用來存儲數字,一個用來存儲運算符,遇到括號以后就遞歸進入括號內運算,實現方式有點笨拙,后面補充一下“逆波蘭表達式”的算法實現。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: haodiaocao的视频这里看 | 男女性刺激爽爽免费视频 | 无码观看AAAAAAAA片 | 国产婷婷综合丁香亚洲欧洲 | 2020韩国r级理论片在线观看 | 女人用粗大自熨喷水在线视频 | 亚洲国产精品无码中文字幕 | 欧美成人香蕉在线观看 | x8x8国产在线观看2021 | 欧美日韩国产一区二区三区不卡 | 午夜福利合集1000在线 | 91夜夜人人揉人人捏人人添 | 日本在线一区二区 | 无遮免费网站在线入口 | 国产特黄一级一片免费 | 四虎免费在线观看 | 国产精品nv在线观看 | 四虎影院新网址 | 国产农村一一级特黄毛片 | 波多野结衣中文丝袜字幕 | 紧身牛仔裤美女被啪啪久久网 | 亚洲干综合 | 精品视频日本 | 国产精品亚洲片在线va | 超碰成人在线播放 | 日韩福利一区 | 日本最新免费二区 | 51国产午夜精品免费视频 | 亚洲欧美在线观看首页 | 99在线观看视频免费精品9 | 天美蜜桃精东乌鸦传媒 | 亚洲www视频 | 天天快乐高清在线观看 | 欧美同性gayvidoes | 精品日韩二区三区精品视频 | 精品国产一级在线观看 | 亚洲精品视频导航 | 91高清国产视频 | 日韩在线视频免费不卡一区 | 国产成人h综合亚洲欧美在线 | 日本欧美不卡一区二区三区在线 |