版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
某知名出行打車服務(wù)商PHP工程師面試筆試真題18一、選擇題1.
如果等式12*25=311成立,那么使用的是______進(jìn)制運(yùn)算。A.七B.八C.九D.十一正確答案:C[解析]當(dāng)進(jìn)行乘法(江南博哥)運(yùn)算時(shí),無(wú)論是什么進(jìn)制的數(shù)進(jìn)行運(yùn)算,其基本方法都是相同的,以十進(jìn)制數(shù)的計(jì)算為例:2*5=10。如果是七進(jìn)制,那么運(yùn)算結(jié)果最后一位一定是10%7=3,相乘后進(jìn)位值為10/7=1。同理,如果是八進(jìn)制,相乘結(jié)果最后一位一定等于10%8=2。如果是九進(jìn)制,最后一位一定是10%9=1。如果是十一進(jìn)制,最后一位一定是10%11=A(類似于十六進(jìn)制中,使用A表示數(shù)字10)。
本題中,計(jì)算結(jié)果為311,最后一位為1,可以排除選項(xiàng)A選項(xiàng)B和選項(xiàng)D,只有選項(xiàng)C滿足題意。
所以,本題的答案為C。
2.
下面說(shuō)法錯(cuò)誤的是______A.如果一個(gè)類的成員前面有訪問(wèn)修飾符private,那么這些成員不能被繼承,在類的外部不可見(jiàn)。但如果成員被指定為protected和public,那么可以被繼承,在類的外部也是可見(jiàn)的。B.PHP5中,final關(guān)鍵字可以禁止繼承和重載C.PHP5中,析構(gòu)函數(shù)的名稱是__destruct(),并且不能有任何參數(shù)D.繼承接口的類必須實(shí)現(xiàn)接口中聲明的所有方法,在PHP中,如果繼承接口的類沒(méi)有實(shí)現(xiàn)接口中的方法,那么將會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤正確答案:A[解析]對(duì)于選項(xiàng)A,private修飾的成員是不可以被繼承的,protected的成員是可以被繼承的,但是在外部不可見(jiàn)。選項(xiàng)A說(shuō)法錯(cuò)誤,選項(xiàng)A正確。
對(duì)于選項(xiàng)B,final關(guān)鍵字的方法是禁止被繼承和重載的。選項(xiàng)B說(shuō)法正確,選項(xiàng)B錯(cuò)誤。
對(duì)于選項(xiàng)C,析構(gòu)函數(shù)不能有參數(shù)。選項(xiàng)C說(shuō)法正確,選項(xiàng)C錯(cuò)誤。
對(duì)于選項(xiàng)D,繼承接口的類沒(méi)有實(shí)現(xiàn)接口中的方法是會(huì)產(chǎn)生錯(cuò)誤的。選項(xiàng)D說(shuō)法正確,選項(xiàng)D錯(cuò)誤。
所以,本題的答案為A。
3.
考慮如下腳本:運(yùn)行時(shí),盡管文件test.txt已經(jīng)被用unlink(()函數(shù)刪除,腳本仍然輸出1,1。在腳本的最后添加什么函數(shù)才能解決這個(gè)問(wèn)題?______
<?php
$f=fopen("test.txt","w");
fwrite($f,"test");
fclose($f);
echo(int)file_exists("test.txt").',';
unlink("c:\\test.txt");
echo(int)file_exists("test.txt");
?>A.clearstatcache()B.fflush()C.ob_flush()D.touch()正確答案:A[解析]腳本仍然輸出1,1,是因?yàn)镻HP會(huì)緩存某些文件系統(tǒng)函數(shù)的返回值,例如file_exists()函數(shù),為了提高腳本處理重復(fù)操作時(shí)的效率,所以可以使用clearstatcache()函數(shù)清理緩存,防止unlink()刪除文件后仍然輸出1,1。選項(xiàng)A正確。
fflush()函數(shù)是將緩沖內(nèi)容輸出到文件,ob_flush()函數(shù)是輸出緩沖區(qū)中的內(nèi)容,touch()函數(shù)是設(shè)置指定文件的訪問(wèn)和修改時(shí)間。選項(xiàng)B選項(xiàng)C選項(xiàng)D錯(cuò)誤。
所以,本題的答案為A。
4.
在PHP的“安全模式”下,有助于降低安全風(fēng)險(xiǎn)的是______A.限制shell命令的執(zhí)行B.限制對(duì)系統(tǒng)環(huán)境變量的訪問(wèn)C.限制PHP的文件包含目錄D.限制允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作E.以上全部正確答案:ABC[解析]在安全模式下,增加了許多附加的安全驗(yàn)證,從而降低了安全隱患。但是在安全模式下無(wú)法執(zhí)行系統(tǒng)命令、訪問(wèn)環(huán)境變量和判斷文件引入是否安全。正是這些限制使得安全模式下運(yùn)行的代碼有更小的風(fēng)險(xiǎn)。選項(xiàng)A選項(xiàng)B選項(xiàng)C正確。
所以,本題的答案為ABC。
5.
PHP的mysql系列函數(shù)中常用的遍歷數(shù)據(jù)的函數(shù)是______A.mysql_fetch_row,mysql_fetch_assoc,mysql_affetced_rowsB.mysql_fecth_row,mysql_fecth_assoc,mysql_affetced_rowsC.mysql_fetch_rows,mysql_fetch_array,mysql_fetch_assocD.mysql_fecth_row,mysql_fecth_array,mysql_fecth_assoc正確答案:D[解析]mysql系列函數(shù)常用的遍歷數(shù)據(jù)函數(shù)有mysql_fetch_row、mysql_fetch_array、mysql_fetch_assoc等三個(gè)函數(shù),但不存在mysql_fetch_rows。
所以,本題的答案為D。
6.
使用mysqli擴(kuò)展可以很方便地完成數(shù)據(jù)庫(kù)的事務(wù)處理功能,下面對(duì)數(shù)據(jù)庫(kù)事務(wù)處理的描述中,不正確的是______A.MySQL目前只有InnoDB和BDB兩個(gè)數(shù)據(jù)表類型才支持事務(wù)B.MySQL是以自動(dòng)提交(autocommit)模式運(yùn)行的,必須執(zhí)行mysqli對(duì)象中的autocommit(0)方法關(guān)閉MySQL事務(wù)機(jī)制的自動(dòng)提交模式C.調(diào)用mysqli類對(duì)象的commit()方法提交事務(wù)D.調(diào)用mysqli類對(duì)象的rollback()方法撤銷事務(wù),并開(kāi)啟自動(dòng)提交模式運(yùn)行正確答案:D[解析]mysqli類對(duì)象的rollbackback()方法,只是撤銷從上一次提交commit()后不成功的事務(wù),并不會(huì)開(kāi)啟自動(dòng)提交模式。選項(xiàng)D正確。
所以,本題的答案為D。
7.
以下程序的功能是______
<?php
$a=array_sum(explode('',microtime()));
for($i=0;$i<10000;$i++);
$b=array_sum(explode('',microtime()));
echo$b-$a;
?>A.測(cè)算for循環(huán)的執(zhí)行時(shí)間B.測(cè)定服務(wù)器的時(shí)鐘頻率C.計(jì)算操作系統(tǒng)的硬件時(shí)鐘頻率與軟件時(shí)鐘頻率的差D.測(cè)算for循環(huán)、一個(gè)array_sum()函數(shù)與一個(gè)microtime()的總執(zhí)行時(shí)間E.測(cè)算for循環(huán)、兩個(gè)array_sum()函數(shù)與兩個(gè)microtime()的總執(zhí)行時(shí)間正確答案:A[解析]代碼array_sum(explode('',microtime()))求得的是時(shí)間戳和微妙數(shù)的一個(gè)和,在執(zhí)行循環(huán)前的$a得到的是執(zhí)行循環(huán)前的開(kāi)始時(shí)間點(diǎn),$b得到的是每次循環(huán)的運(yùn)行時(shí)間點(diǎn)。所以每次循環(huán)后的$b的值都是執(zhí)行一次循環(huán)后的總時(shí)間點(diǎn),直到循環(huán)結(jié)束,$b得到的是執(zhí)行10000次的總執(zhí)行時(shí)間點(diǎn),最后輸出的$b減去$a的值是for循環(huán)的總執(zhí)行時(shí)間。選項(xiàng)A正確。
所以,本題的答案為A。
8.
以下有關(guān)PHP字符串的說(shuō)法中,不正確的是______A.如果一個(gè)腳本的編碼是ISO-8859-1,則其中的字符串也會(huì)被編碼為ISO-8859-1B.PHP的字符串在內(nèi)部是字節(jié)組成的數(shù)組,用花括號(hào)訪問(wèn)或修改字符串對(duì)多字節(jié)字符集很不安全C.substr()、strpos()、strlen()、htmlentities()處理字符串時(shí)依據(jù)的編碼方式是相同的D.一個(gè)布爾值Boolean的true被轉(zhuǎn)換成string的“1”,false被轉(zhuǎn)換成空字符串正確答案:C[解析]substr在處理多字節(jié)字符的時(shí)候可能會(huì)出現(xiàn)亂碼。
所以,本題的答案為C。
9.
以下程序如何用三元操作替代?______
if($a<10){
if($b>11){
if($c==10&&$d!=$c){
$x=0;
}else{
$x=1;
}
}
}A.$x=($a<10||$b>11||$c==1&&$d!=$c)?0:1;B.$x=($a<10||$b>11||($c==1&&$d!=$c))?0:1;C.$x=(($a<10&&$b>11)||($c==1&&$d!=$c))?0:1;D.$x=($a<10&&$b>11&&$c==1&&$d!=$c)?1:0;E.以上都不對(duì)正確答案:E[解析]由于需要$a<10為真才能執(zhí)行內(nèi)部語(yǔ)句,而$b>11也需要為真才能執(zhí)行下一個(gè)條件,所以$a<10需要與$b>11同時(shí)為真才能執(zhí)行到if($c==10&&$d!=$c),才會(huì)執(zhí)行$x=0或$x=1,如果它們其中有一個(gè)條件為假,那么都不會(huì)執(zhí)行得到$x=0或$x=1,因此可以改寫(xiě)用($a<10&&$b>11)?($c==10&&$d!=$c)?$x=0:$x=1:"的三元運(yùn)算符替代。選項(xiàng)E正確。
所以,本題的答案為E。
10.
下列有關(guān)關(guān)聯(lián)數(shù)組和索引數(shù)組的描述中,正確的是______A.索引數(shù)組是以字符串作為鍵名的數(shù)組B.關(guān)聯(lián)數(shù)組是以數(shù)字作為數(shù)組的鍵名的數(shù)組C.關(guān)聯(lián)數(shù)組是以字符串作為鍵值的數(shù)組D.索引數(shù)組是以數(shù)字作為數(shù)組的鍵名的數(shù)組正確答案:D[解析]索引數(shù)組是以數(shù)字作為鍵名的數(shù)組,關(guān)聯(lián)數(shù)組是以字符串作為鍵名的數(shù)組。但是關(guān)聯(lián)數(shù)組的值不一定是字符串。選項(xiàng)D正確。
所以,本題的答案為D。
二、填空題1.
前置++和后置++的區(qū)別是______。正確答案:變量前置++是先將變量增加1,然后將值賦值給原來(lái)的變量;變量后置++是先返回變量的當(dāng)前值,然后將變量的當(dāng)前值增加1。
2.
$array['anykey']和$array[anykey]的區(qū)別是______。正確答案:數(shù)組中鍵名一般由單引號(hào)指明鍵名為字符串,如果沒(méi)有單引號(hào),那么系統(tǒng)首先認(rèn)為鍵名為常量,如果發(fā)現(xiàn)沒(méi)有定義該常量值,那么認(rèn)為該值為字符串并且會(huì)報(bào)NOTICE錯(cuò)誤,但這樣執(zhí)行效率較低。它們的根本區(qū)別在于編譯時(shí)系統(tǒng)認(rèn)為'anykey'是字符串,而anykey可能是常量或者字符串。
3.
PHP中獲取圖像尺寸大小的方法是______。正確答案:getimagesize()、Imagesx()、Imagesy()??梢允褂胓etimagesize()獲取圖片的大小及相關(guān)信息,使用方法為getimagesize(圖片路徑),如果成功獲取,那么返回?cái)?shù)組,如果不成功,那么返回false。
2)可以使用Imagesx()函數(shù)用于獲取圖像的寬度,單位為像素,返回值為整型。
3)可以使用Imagesy()函數(shù)用于獲取圖像的高度,單位為像素,返回值為整型。
4.
varchar和char的區(qū)別是______。正確答案:varchar與char的區(qū)別是char是固定長(zhǎng)度的字符類型,分配多少空間,就占用多少空間。varchar是可變長(zhǎng)度的字符類型,內(nèi)容有多大就占用多大的空間,比較節(jié)省空間。查找效率上char比varchar快,因?yàn)関archar是非定長(zhǎng),必須先查找長(zhǎng)度,然后進(jìn)行數(shù)據(jù)的提取,由于它比char定長(zhǎng)類型多了一個(gè)步驟,所以效率比char低。
5.
在MySQL中提取數(shù)據(jù)時(shí),用______來(lái)刪除重復(fù)的記錄。正確答案:DISTINCT。[解析]DISTINCT關(guān)鍵字可以對(duì)數(shù)據(jù)過(guò)濾重復(fù)記錄,只返回唯一的、不同值的數(shù)據(jù)。
三、簡(jiǎn)答題1.
MySQL的索引都有哪些?正確答案:MySQL的索引如下:
1)唯一索引。唯一索引避免了表中存在重復(fù)的數(shù)據(jù),提高了檢索速度。創(chuàng)建唯一索引的目的是避免表中插入重復(fù)的數(shù)據(jù),從而提高表的查詢速度。
2)普通索引。普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值。優(yōu)點(diǎn)如下:①簡(jiǎn)化MySQL對(duì)這個(gè)索引的管理工作,使工作更有效率;②MySQL會(huì)對(duì)新插入的數(shù)據(jù)自動(dòng)檢測(cè)是否有重復(fù)的值。
3)主索引。即主鍵索引,關(guān)鍵字PRIMARY。
4)外鍵索引。外鍵約束。
5)復(fù)合索引。索引可以覆蓋多列數(shù)據(jù),例如,INDEX(columnA,columnB)。這種索引的特點(diǎn)是MySQL可以有選擇地使用索引,例如,INDEX(A,B,C)可以當(dāng)作A或(A,B)的索引來(lái)使用,但不能當(dāng)作B或(B,C)來(lái)使用。
6)索引的長(zhǎng)度。在為char和varchar類型的數(shù)據(jù)列定義索引時(shí),可以把索引的長(zhǎng)度限制為一個(gè)給定的字符個(gè)數(shù),這個(gè)數(shù)字必須小于這個(gè)字段所允許的最大字符個(gè)數(shù)。
7)全文索引。針對(duì)內(nèi)容開(kāi)頭的字符進(jìn)行檢索操作,如果檢索的內(nèi)容由多個(gè)字段構(gòu)成,數(shù)據(jù)量很大,那么全文索引是必要的。注意,MySQL的InnoDB引擎不支持全文搜索索引。
2.
正則表達(dá)式是什么?PHP中有哪些常用的與正則相關(guān)的函數(shù)?請(qǐng)寫(xiě)出一個(gè)email的正則表達(dá)式、中國(guó)手機(jī)號(hào)碼和座機(jī)號(hào)碼的正則表達(dá)式?正確答案:正則表達(dá)式是一種字符串匹配的模式,可以判斷一個(gè)字符串的組成是否滿足某種特定的模式,將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。
常用的正則函數(shù)有:
1)preg_match()函數(shù)用于通過(guò)正則表達(dá)式匹配字符串。
2)preg_quote()函數(shù)可以轉(zhuǎn)義正則表達(dá)式字符。
3)preg_replace()函數(shù)用于執(zhí)行正則表達(dá)式的搜索和替換。
4)preg_replace_callback()函數(shù)可以執(zhí)行一個(gè)正則表達(dá)式搜索和使用回調(diào)替換。
5)preg_split()函數(shù)可以通過(guò)一個(gè)正則表達(dá)式分隔字符串。
email擁有固定的格式,可以根據(jù)這個(gè)格式匹配正確的email,它的正則表達(dá)式為/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/。
中國(guó)手機(jī)號(hào)碼的正則表達(dá)式如下:
/^1[3-5,8]{1}[0-9]{9)$/
座機(jī)號(hào)碼的驗(yàn)證的正則表達(dá)式如下:
/^([0,9]{3,4}-)?[0-9]{7,8}$/
3.
PHP的魔術(shù)方法包含哪些(越多越好)?在什么情況下被自動(dòng)調(diào)用?正確答案:PHP可用的魔術(shù)方法會(huì)在特定情況下被自動(dòng)調(diào)用,但是前提是特定的條件被觸發(fā),并且這些魔術(shù)方法可以在類中作為方法。
PHP的魔術(shù)方法有:
1)__construct()。構(gòu)造函數(shù),創(chuàng)建對(duì)象時(shí)自動(dòng)被調(diào)用。
2)__destruct()。析構(gòu)函數(shù),對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行。
3)__clone()。復(fù)制函數(shù),調(diào)用clone方法時(shí)自動(dòng)調(diào)用。
4)__set()。當(dāng)程序試圖寫(xiě)入一個(gè)不存在或不可見(jiàn)的成員變量時(shí)自動(dòng)調(diào)用。該函數(shù)在類中定義時(shí)必須有兩個(gè)參數(shù),即變量名和變量值。
5)__get()。當(dāng)程序調(diào)用一個(gè)未定義或不可見(jiàn)的成員變量時(shí)自動(dòng)調(diào)用__get()來(lái)讀取變量值。定義時(shí)必須有一個(gè)參數(shù),即變量名。
6)__call()。當(dāng)程序試圖調(diào)用不存在或不可見(jiàn)的成員方法時(shí),自動(dòng)調(diào)用__call()。__call()方法一般用于監(jiān)視錯(cuò)誤的方法調(diào)用。為了避免當(dāng)調(diào)用的方法不存在時(shí)產(chǎn)生錯(cuò)誤,可以使用__call()方法來(lái)避免。該方法包含兩個(gè)參數(shù),即方法名和方法參數(shù)。其中方法參數(shù)以數(shù)組形式存在。
7)__sleep()。使用serialize()實(shí)現(xiàn)序列化對(duì)象時(shí),先調(diào)用該方法,可以用來(lái)清除對(duì)象并返回一個(gè)該對(duì)象中所有變量的數(shù)組。
8)__wakeup()。使用unserialize()還原一個(gè)被序列化的對(duì)象時(shí),先執(zhí)行該方法,恢復(fù)在序列化中可能丟失的數(shù)據(jù)庫(kù)連接及相關(guān)工作。
9)__toString()。當(dāng)使用echo或print輸出對(duì)象時(shí),將對(duì)象轉(zhuǎn)化為字符串。
10)__autoload()。調(diào)用未被實(shí)例化的類時(shí),自動(dòng)調(diào)用,在指定路徑下查找和該類名稱相同的文件。
4.
請(qǐng)簡(jiǎn)述HTTP中POST、GET、PUT、DELETE方式的區(qū)別。正確答案:HTTP定義了與服務(wù)器交互的不同的方法,最基本的方法是POST、GET、PUT和DELETE,URL全稱是資源描述符,可以認(rèn)為一個(gè)URL地址用于描述一個(gè)網(wǎng)絡(luò)上的資源,而對(duì)應(yīng)的HTTP中的四種方法GET、POST、PUT、DELETE對(duì)應(yīng)這個(gè)資源的查、改、增和刪四個(gè)操作。它們的具體功能如下:
1)根據(jù)HTTP規(guī)范,GET用于信息獲取,信息應(yīng)該是安全的。
2)根據(jù)HTTP規(guī)范,POST表示可以修改服務(wù)器上的資源的請(qǐng)求。
3)PUT和POST極為相似,都是向服務(wù)器發(fā)送數(shù)據(jù),但它們之間有一個(gè)重要區(qū)別,PUT通常指定了資源的存放位置,而POST則沒(méi)有,POST的數(shù)據(jù)存放位置由服務(wù)器決定。
4)DELETE的功能是刪除某一個(gè)資源。
5.
文件上傳需要注意哪些細(xì)節(jié)?怎么把文件保存到指定目錄?怎么避免上傳文件重名問(wèn)題?正確答案:文件上傳需要注意以下幾點(diǎn):
1)確保php.ini中已經(jīng)開(kāi)啟了文件上傳功能。
2)如果對(duì)文件上傳的大小有限制,那么需在php.ini中修改允許上傳的最大值,默認(rèn)是2MB。
3)在上傳圖片的表單中,form標(biāo)簽需要加上enctype="multipart/form-data"。
4)表單上傳圖片時(shí),method必須使用post。
5)表單使用file類型,并且有name屬性值,后臺(tái)才能獲取。
6)必須保證上傳文件的大小不會(huì)超出限制,文件類型符合上傳要求,上傳文件的存儲(chǔ)路徑不存在問(wèn)題。
7)需要使用$_FILES接收上傳文件信息。其中$_FILES是一個(gè)二維數(shù)組,一維是上傳空間的name,二維對(duì)應(yīng)了文件名、文件類型、上傳到臨時(shí)目錄下的臨時(shí)文件名、文件大小、是否有錯(cuò)誤等信息。如果是批量上傳,那么二維數(shù)組下標(biāo)是數(shù)組而不是字符串。
文件上傳后是放置在服務(wù)器端的臨時(shí)路徑下的,需要使用move_uploaded_file()函數(shù)將上傳后的文件保存到指定目錄。
為了避免上傳圖片重名,可以使用時(shí)間戳加隨機(jī)數(shù)的方式給文件重新命名。
四、編程題1.
打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如,153是一個(gè)“水仙花數(shù)”,因?yàn)?53=1的三次方+5的三次方+3的三次方。正確答案:利用for循環(huán)控制100~999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位、十位和百位。利用循環(huán),分別用$i代表百位,$i代表十位,$m代表個(gè)位,且百位的初始數(shù)值是1~9,而十位和個(gè)位初始數(shù)值是0~9,然后按百位、十位、個(gè)位的順序嵌套循環(huán),判斷找出符合“水仙花數(shù)”的公式的數(shù)。
PHP代碼實(shí)現(xiàn)如下:
<?php
for($i=1;$i<=9;$i++){
for($j=0;$j<=9;$j++){
for($m=0;$m<=9;$m++){
if(pow($i,3)+pow($j,3)+pow($m,3)==100*$i+10*$j+$m){
echo$i.$j.$m;
}
}
}
}
?>
程序的運(yùn)行結(jié)果為
01153370371407
2.
給定一個(gè)數(shù)d和n,如何計(jì)算d的n次方?例如,d=2,n=3,d的n次方為23=8。正確答案:可以把n的取值分為如下幾種情況:
1)當(dāng)n=0時(shí),計(jì)算結(jié)果肯定為1。
2)當(dāng)n=1時(shí),計(jì)算結(jié)果肯定為d。
3)當(dāng)n>0時(shí),計(jì)算方法為初始化計(jì)算結(jié)果result=1,然后對(duì)result執(zhí)行n次乘以d的操作,得到的結(jié)果就是d的n次方。
4)當(dāng)n<0時(shí),計(jì)算方法為初始化計(jì)算結(jié)果result=1,然后對(duì)result執(zhí)行|n|次除以d的操作,得到的結(jié)果就是d的n次方。
以2的三次方為例,首先初始化result=1,接著對(duì)result執(zhí)行3次乘以2的操作:result=result*2=1*2=2,result=result*2=2*2=4,result=result*2=4*2=8,因此,2的三次方等于8。根據(jù)這個(gè)思路給出實(shí)現(xiàn)代碼如下:
<?php
/*函數(shù)功能:計(jì)算一個(gè)數(shù)d的n次方*/
functionpower($d,$n)
{
if($n==0)return1;
if($n==1)return$d;
$result=1.0;
if($n>0)
{
for($i=1;$i<=$n;$i++)
{
$result*=$d;
}
return$result;
}
else
{
for($i=1;$i<=abs($n);$i++)
{
$result=$result/$d;
}
}
return$result;
}
printf("%0.2f<br>",power(2,3));
printf("%0.2f<br>",power(-2,3));
printf("%0.3f",power(2,-3));
?>
程序的運(yùn)行結(jié)果為
8.00
-8.00
0.125
算法性能分析:這個(gè)算法時(shí)間復(fù)雜度為O(n),需要注意的是,當(dāng)n非常大的時(shí)候,這種算法的效率是非常低下的。
3.
給定一個(gè)數(shù)組,數(shù)組中含有重復(fù)元素,給定兩個(gè)數(shù)字num1和num2,求這兩個(gè)數(shù)字在數(shù)組中出現(xiàn)的位置的最小距離。正確答案:對(duì)于這類問(wèn)題,最簡(jiǎn)單的方法就是對(duì)數(shù)組進(jìn)行雙重遍歷,找出最小距離,但是這種方法效率比較低下。由于在求距離的時(shí)候只關(guān)心num1與num2這兩個(gè)數(shù),因此,只需要對(duì)數(shù)組進(jìn)行一次遍歷即可,在遍歷的過(guò)程中分別記錄num1或num2的位置就可以非常方便地求出最小距離。
主要思路:對(duì)數(shù)組進(jìn)行雙重遍歷,外層循環(huán)遍歷查找num1,只要找到num1,就開(kāi)始內(nèi)層循環(huán),即對(duì)數(shù)組從頭開(kāi)始遍歷查找num2,當(dāng)遍歷到num2時(shí),就計(jì)算它們的距離dist。當(dāng)遍歷結(jié)束后,最小的dist值就是它們之間的最小距離。
實(shí)現(xiàn)代碼如下:
<?php
functionminDistance($arr,$num1,$num2){
$len=count($arr);
if(!$arr||$len<=0){
printf("參數(shù)不合理");
return";
}
$minDis=max($arr);
//num1與num2的最小距離
$dist=0;
for($i=0;$i<$len;++$i){
if($arr[$i]==$num1){
for($j=0;$j<$len;++$j){
if($arr[$j]==$num2){
$
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- YC/T 616-2024殘次煙判定及處理規(guī)范
- 醫(yī)院住院樓混凝土施工承包合同
- 生態(tài)農(nóng)業(yè)管理創(chuàng)新技巧
- 企業(yè)資金管理辦法:資金結(jié)構(gòu)調(diào)整
- 鋼鐵冶煉工程招投標(biāo)實(shí)施策略
- 2024年鏟車節(jié)能減排協(xié)議3篇
- 2024展廳裝飾裝修承包合同(含展品保管與維護(hù))3篇
- 2024年度趙苑離婚協(xié)議中子女探望權(quán)及監(jiān)護(hù)權(quán)協(xié)議書(shū)3篇
- 社會(huì)工作教師聘用協(xié)議
- 施工協(xié)議書(shū)與材料質(zhì)量
- 期末測(cè)試卷(一)2024-2025學(xué)年 人教版PEP英語(yǔ)五年級(jí)上冊(cè)(含答案含聽(tīng)力原文無(wú)聽(tīng)力音頻)
- 2023-2024學(xué)年廣東省深圳市南山區(qū)八年級(jí)(上)期末英語(yǔ)試卷
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 漢服娃衣創(chuàng)意設(shè)計(jì)與制作智慧樹(shù)知到期末考試答案章節(jié)答案2024年四川文化產(chǎn)業(yè)職業(yè)學(xué)院
- 《大數(shù)據(jù)技術(shù)原理與應(yīng)用(第3版)》期末復(fù)習(xí)題庫(kù)(含答案)
- 廣東省中山市2023-2024學(xué)年四年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 8款-組織架構(gòu)圖(可編輯)
- 海螺牌水泥質(zhì)量檢驗(yàn)報(bào)告28天報(bào)告425加章2015
- 云南省教育科學(xué)規(guī)劃課題開(kāi)題報(bào)告 - 云南省教育科學(xué)研究院
- 二年級(jí)上,數(shù)學(xué),3個(gè)兩位數(shù)加減,80題,(豎式計(jì)算)
- 人民法院涉訴信訪案件終結(jié)辦法
評(píng)論
0/150
提交評(píng)論