2021年奇虎360技術(shù)崗(程序員)面試題

小編:管理員 2068閱讀 2021.06.24

第1題:



Class A;

Class B;

void F() {

????????A a;

????????B b;

}

??

在函數F中,本地變量a和b的構造函數(constructor)和析構函數(destructor)的調用順序是:

?????????

A? b構造 a構造 a析構 b析構

B? a構造 a析構 b構造 b析構

C? b構造 a構造 b析構 a析構

D? a構造 b構造 b析構 a析構




D?

按變量聲明順序構造對象,然后入棧

按相反順序出棧,析構對象。


第2題:


?假定指針變量p定義為“int *p=new int(100);”,要釋放p所指向的動(dòng)態(tài)內存,應使用語(yǔ)句( )

?

A? delete p;

B? delete *p;

C? delete &p;

D? delete []p;



?A


第3題:


?選擇填空:


#include

void test(void *data) {

????unsigned int value = (此處應填入)

????printf("%u", value);

}

using namespace std;

int main() {

????unsigned int value = 10;

????test(&value);

????return 0;

}

?

A? *data

B? (unsigned int)(*data)

C? (unsigned*)data

D? *((unsigned int *)data)




?D

解釋?zhuān)?

? void

?注意,參數類(lèi)型是void, ? ??所以先要進(jìn)行指針轉換:(unsigned ? ?int *)然后再取值。



第4題:


?在C++, 下列哪一個(gè)可以做為對象繼承之間的轉換

????

A? static_cast

B? dynamic_cast

C? const_cast

D? reinterpret_cast



?B
dynamic_cast 動(dòng)態(tài)轉換


第5題:


?如果進(jìn)棧序列為e1,e2,e3,e4,則不可能的出棧序列是( )

?????

A? e2,e4,e3,e1

B? e4,e3,e2,e1

C? e1,e2,e3,e4

D? e3,e1,e4,e2



?D

如果e3第一個(gè)出棧,拿下一個(gè)應該是e4或者e2,但絕不可能是e1


第6題:


?若某二叉樹(shù)的前序遍歷訪(fǎng)問(wèn)順序是abdgcefh,中序遍歷訪(fǎng)問(wèn)順序是dgbaechf,則其后序遍歷的結點(diǎn)訪(fǎng)問(wèn)順序是( )

?

A? gdbehfca

B? hcdeabf

C? fdcehgba

D? gdbehcfa



?A

根據前序和中序序列畫(huà)出二叉樹(shù)的結構,寫(xiě)出其后序序列即可。


第7題:


?用二分法查找長(cháng)度為10的、排好序的線(xiàn)性表,查找不成功時(shí),最多需要比較多少次?

??

A? 3

B? 4

C? 5

D? 6



?B

8<10<16,而log16=4


第8題:


?以下程序是用輾轉相除法來(lái)計算兩個(gè)非負數之間的最大公約數:


long long gcd(long long x, long long y) {

????if (y == 0)

????????return x;

????else

????????return gcd(y, x % y);

}

??

我們假設x,y中最大的那個(gè)數的長(cháng)度為n,x>y,基本運算時(shí)間復雜度為O(1),那么該程序的時(shí)間復雜度為( )

?

A? O(1)

B? O(logy)

C? O(n)

D? O(x)




?求最大公約數的最常用的算法是歐幾里得算法,也稱(chēng)為輾轉相除法.
問(wèn)題定義為求i和j的最大公約數gcd(i,j),其中i和j是整數,不妨設i>j.
算法可以遞歸的表示:
1.如果j能整除i,那么gcd(i,j)=j;
2.j不能整除i,令r=i%j,那么gcd(i,j)=gcd(j,r).
使用C語(yǔ)言實(shí)現:

int gcd(int i, int j)

{

??? int r = i % j;

??? return r == 0 ? j : gcd(j, r);

}

正確性分析:
算法的步驟1,顯然成立(最大公約數定義).關(guān)鍵是要證明步驟2.
設d是i和j的最大公約數,
那么i=md,j=nd,m和n互質(zhì)(否則d不是最大公約數).
由r=i%j可以得到i=kj+r,k=?m/n?,k≥1(我們前面假設過(guò)i>j).
把i=md,j=nd代入得到
md=knd+r
那么
r=(m-kn)d
m-kn和m也是互質(zhì)的.
所以得到d是j和r的最大公約數.

時(shí)間復雜度分析:
逆著(zhù)看該算法,最后的余數是0,倒數第二次余數是d,倒數第三次是kd,k>1…
由于組成了一個(gè)數列,{0,d,kd,nkd+d,…}
數列的n項加上n+1項,比n+2項要小,所以比斐波納契數列增長(cháng)的要快.
我們已知斐波納契數列增長(cháng)速度是指數,那么待分析的數列也是指數增長(cháng).
設歐幾里得算法需要k次,那么j=O(2^k),則k=O(lg j).

所以歐幾里得算法求最大公約數的時(shí)間復雜度是對數量級的,速度非?.


第9題:


?一棵有124個(gè)葉節點(diǎn)的完全二叉樹(shù),最多有( )個(gè)節點(diǎn)。

?

A? 247

B? 248

C? 249

D? 250



?B

n0 = n2 + 1,于是度為2的結點(diǎn)個(gè)數123個(gè)完全二叉樹(shù)中度為1結點(diǎn)個(gè)數最多1個(gè)因此該完全二叉樹(shù)中結點(diǎn)最多有123 ?+ 1 + 124 = 248個(gè)


第10題:


?鏈表不具備的特點(diǎn)是( )

?

A? 可隨機訪(fǎng)問(wèn)任何一個(gè)元素

B? 插入、刪除操作不需要移動(dòng)元素

C? 無(wú)需事先估計存儲空間大小

D? 所需存儲空間與線(xiàn)性表長(cháng)度成正比



?A

不同于尋秩訪(fǎng)問(wèn)的數組,鏈表無(wú)法實(shí)現隨機訪(fǎng)問(wèn)任何一個(gè)元素O(1), 訪(fǎng)問(wèn)時(shí)需要遍歷鏈表直到訪(fǎng)問(wèn)到該元素。


第11題:


?下列排序算法中,在待排序數據有序的情況下,花費時(shí)間最多的是( )

?

A? 快速排序

B? 希爾排序

C? 冒泡排序

D? 堆排序



?A

待排序數據有序就是快排的最差情況,此時(shí)的時(shí)間復雜度是O(n ? 2 ? )


第12題:


?有 1000 個(gè)無(wú)序的整數,希望使用最快的方式找出前 50 個(gè)最大的,最佳的選擇是( )

A? 冒泡排序

B? 基數排序

C? 堆排序

D? 快速排序



?C

找出若干個(gè)數中最大/最小的前K個(gè)數,用堆排序是最好的

找最大數,用小根堆

找最小數,用大根堆


第13題:


?下面哪個(gè)不是用來(lái)解決哈希表沖突的開(kāi)放地址法?

?

A? 線(xiàn)性探測法

B? 線(xiàn)性補償探測法

C? 拉鏈探測法

D? 隨機探測法



?C

拉鏈探測法,開(kāi)放定址法區分為線(xiàn)性探查法、線(xiàn)性補償探測法、隨機探測等。


第14題:


?下列數最大的是( )。括號內為數字,括號外為進(jìn)制。

?

A? (10010101)2

B? (227)8

C? (96)16

D? (143)10



?B


第15題:


?在CPU和內存之間增加cache的作用是( ?)

?????

A? 提高內存穩定性

B? 解決內存速度低于CPU的性能問(wèn)題

C? 增加內存容量

D? 增加內存容量且加快存取速度



?B

這是存儲器分層部分的內容,可以參考《深入理解計算機系統》


第16題:


?假設整數0x12345678 存放在內存地址0x0開(kāi)始的連續四個(gè)字節中 (即地址0x0到 0x3). 那么在以L(fǎng)ittle Endian字節序存儲的memory中,地址0x3的地方存放的字節是:

A? 0x12

B? 0x34

C? 0x56

D? 0x78



?A

a) Little-Endian就是低位字節排放在內存的低地址端, ? 高位字節排放在內存的高地址端。

b) ?Big-Endian就是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。

c) ? 網(wǎng)絡(luò )字節序:TCP/IP各層協(xié)議將字節序定義為Big-Endian,因此TCP/IP協(xié)議中使用的字節序通常稱(chēng)之為網(wǎng)絡(luò )字節序。

如果是?Little-Endian:0x0-0x3內存分別存放的是:0x78、0x56、0x34、0x12; ? ? ??

如果是? ? ? ? Big-Endian ? ? :0x0-0x3內存分別存放的是:0x12、0x34、0x56、0x78; ? ? ?? ??


第17題:


?將邏輯代碼:

if (x % 2) {

????return x - 1;

} else {

????return x;

}

??

用表達式:return x & -2; 替代,以下說(shuō)法中不正確的是( )

???

A? 計算機的補碼表示使得兩段代碼等價(jià)

B? 用第二段代碼執行起來(lái)會(huì )更快一些

C? 這段代碼只適用于x為正數的情況

D? 第一段代碼更適合閱讀

?



?C


第18題:


?代碼生成階段的主要任務(wù)是( )

?????????

A? 把高級語(yǔ)言翻譯成匯編語(yǔ)言

B? 把高級語(yǔ)言翻譯成機器語(yǔ)言

C? 把中間代碼變換成依賴(lài)具體機器的目標代碼

D? 把匯編語(yǔ)言翻譯成機器語(yǔ)言



?C

編譯程序的工作過(guò)程一般劃分為五個(gè)階段:詞法分析、語(yǔ)法分析、語(yǔ)義分析與中間代碼產(chǎn)生、優(yōu)化、目標代碼生成。所以選C 。


第19題:


?后綴式 ab+cd+/可用表達式( )來(lái)表示

?

A? a+b/c+d

B? (a+b)/c+d

C? a+b/(c+d)

D? (a+b)/(c+d)



?D

后綴表達式不包含括號,運算符放在兩個(gè)運算對象的后面,所有的計算按運算符出現的順序,嚴格從左向右進(jìn)行,不再考慮運算符的優(yōu)先規則。
?最后一個(gè)操作是'/',而且前面是一個(gè)+操作,后面沒(méi)有操作,可知/操作最后進(jìn)行,由此可得,另外兩個(gè)操作數是a+b和c+d,因此表達式為D (a+b)/(c+d)


第20題:


?以下關(guān)于函數調用的說(shuō)法哪個(gè)是正確的?

??????

A? 傳值后對形參的修改會(huì )改變實(shí)參的值

B? 傳地址后實(shí)參和形參指向不同的對象

C? 傳引用后形參和實(shí)參是不同的對象

D? 以上都不對



?D

解釋?zhuān)簜鞯刂泛蛡饕,形參,?shí)參指向同一對象,修改形參會(huì )影響實(shí)參

傳值則相反,修改形參不會(huì )影響實(shí)參


第21題:


?一個(gè)合法的 360 賬戶(hù)名稱(chēng)要求如下:是一個(gè)合法的郵箱地址,如 [email protected];郵箱前綴的長(cháng)度為 [ 4, 16 ] 個(gè)字符;郵箱前綴必須以字母開(kāi)頭,字母或數字結尾;郵箱前綴可以包括字母、數字、下劃線(xiàn)。請問(wèn)如下正則表達式中,哪一個(gè)能正確校驗用戶(hù)名的合法性:

?

A? \w[0-9a-zA-Z_]{3,15}\@\w+.([-.]\w+)*

B? [a-zA-Z]\w{3,15}@\w+.\w*

C? [a-zA-Z]\w{2,14}[0-9a-zA-Z]\@\w+([-.]\w+)*

D? [a-zA-Z]\w{2,14}[0-9a-zA-Z]@\w



?C

郵箱前綴必須以字母開(kāi)頭,字母或數字結尾 ? ?這句話(huà) 排除A

郵箱中肯定有“.” ? ? ,D中沒(méi)有 排除D

郵箱前綴可以包括字母、數字、下劃線(xiàn) ? ?,B中 沒(méi)有數字,排除B


所以答案是C


第22題:


?詞法分析器用于識別( )

??

A? 句子

B? 句型

C? 單詞

D? 生產(chǎn)式



?C

思路:參見(jiàn)維基百科:http://zh.wikipedia.org/zh/%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90

詞法分析器是將源文件識別為單詞,對單詞進(jìn)行分類(lèi)


第23題:


?在下列說(shuō)法中,哪個(gè)是錯誤的( )

?

A? 若進(jìn)程A和進(jìn)程B在臨界段上互斥,那么當進(jìn)程A處于該臨界段時(shí),它不能被進(jìn)程B中斷

B? 虛擬存儲管理中采用對換(swapping)策略后,用戶(hù)進(jìn)程可使用的存儲空間似乎增加了

C? 虛擬存儲管理中的抖動(dòng)(thrashing)現象是指頁(yè)面置換(page replacement)時(shí)用于換頁(yè)的時(shí)間遠多于執行程序的時(shí)間

D? 進(jìn)程可以由程序、數據和進(jìn)程控制塊(PCB)描述



?C

c選項中:是請求分頁(yè)虛擬存儲管理。
當需要執行否條的指令或使用某個(gè)數據而發(fā)現他們不再內存中時(shí)候,會(huì )產(chǎn)生缺頁(yè)異常。
系統從磁盤(pán)中把此指令或數據所在的頁(yè)面裝入。缺頁(yè)異常是由硬件所產(chǎn)生的一種特殊終端信號,其中當中斷率較高時(shí),整個(gè)系統的頁(yè)面調度非常頻繁造成大部分時(shí)間都花費在來(lái)回調度上,而不是執行任務(wù),這種現象叫做“抖動(dòng)”!恫僮飨到y》


第24題:


?操作系統采用分頁(yè)式存儲管理(PAGING)方法,要求( )

??

A? 每個(gè)進(jìn)程擁有一張頁(yè)表,且進(jìn)程的頁(yè)表駐留在內存中

B? 每個(gè)進(jìn)程擁有一張頁(yè)表,但只要執行進(jìn)程的頁(yè)表駐留在內存中,其他進(jìn)程的頁(yè)表不必駐留在內存中

C? 所有進(jìn)程共享一張頁(yè)表,以節約有限的內存空間,但頁(yè)表必須駐留在內存中

D? 所有進(jìn)程共享一張頁(yè)表,只有頁(yè)表中當前使用的頁(yè)面必須駐留在內存中,以最大限度地節約有限的內存空間



?B?

在內核中 所有進(jìn)程都是用一個(gè)頁(yè)目錄表,每個(gè)進(jìn)程都有自己的頁(yè)表?


第25題:


?計算機操作系統出現死鎖的原因是什么?

???????

A? 資源數大大少于進(jìn)程數,或進(jìn)程同時(shí)申請的資源數大大超過(guò)資源總數

B? 有多個(gè)封鎖的進(jìn)程同時(shí)存在

C? 一個(gè)進(jìn)程進(jìn)入死循環(huán)

D? 若干進(jìn)程因競爭資源而無(wú)休止的等待著(zhù)其他進(jìn)程釋放已占有的資源



?D

死鎖的原因在于進(jìn)程在等待其它進(jìn)程占有的某些資源,而自身的資源又被其它進(jìn)程等待著(zhù),造成了死循環(huán)。


第26題:


?進(jìn)程間通訊的方式中哪種的訪(fǎng)問(wèn)速度最快?

????

A? 管道

B? 消息隊列

C? 共享內存

D? 套接字



?C

常見(jiàn)進(jìn)程間通信方式的比較:

管道:速度慢,容量有限
消息隊列:容量受到系統限制,且要注意第一次讀的時(shí)候,要考慮上一次沒(méi)有讀完數據的問(wèn)題。
信號量:不能傳遞復雜消息,只能用來(lái)同步
共享內存區:能夠很容易控制容量,速度快 ,但要保持同步,比如一個(gè)進(jìn)程在寫(xiě)的時(shí)候,另一個(gè)進(jìn)程要注意讀寫(xiě)的問(wèn)題,相當于線(xiàn)程中的線(xiàn)程安全,當然,共享內存區同樣可以用作線(xiàn)程間通訊,不過(guò)沒(méi)這個(gè)必要,線(xiàn)程間本來(lái)就已經(jīng)共享了一塊內存的。


第27題:


?TCP的關(guān)閉過(guò)程,說(shuō)法正確的是( )

A? 處于TIME_WAIT狀態(tài)的連接等待2MSL后真正關(guān)閉連接

B? 對一個(gè)established狀態(tài)的TCP連接,在調用shutdown函數之前調用close接口,可以讓主動(dòng)調用的一方進(jìn)入半關(guān)閉狀態(tài)

C? 主動(dòng)發(fā)送FIN消息的連接端,收到對方回應ack之前不能發(fā)只能收,在收到對方回復ack之后不能發(fā)也不能收,進(jìn)入CLOSING狀態(tài)

D? 在已經(jīng)成功建立連接的TCP連接上,任何情況下都不允許丟失數據。



?A
?TIME_WAIT狀態(tài)下發(fā)送的ACK丟失,服務(wù)器端的LAST_ACK時(shí)刻設定的重傳定時(shí)器超時(shí),發(fā)送重傳的FIN,很不幸,這個(gè)FIN也丟失,主動(dòng)關(guān)閉方在 ? TIME_WAIT狀態(tài)等待2MSL沒(méi)收到任何報文段,進(jìn)入CLOSED狀態(tài),當此時(shí)被動(dòng)關(guān)閉方并沒(méi)有收到最后的ACK。所以即使要主動(dòng)關(guān)閉方在 TIME_WAIT狀態(tài)下停留2MSL,也不一定表示四次握手關(guān)閉就一定正常完成


第28題:


?linux中調用write發(fā)送網(wǎng)絡(luò )數據返回n(n>0)表示( ?)

???

A??對端已收到n個(gè)字節

B? 本地已發(fā)送n個(gè)字節

C? 系統網(wǎng)絡(luò )buff收到 n個(gè)字節

D? 系統調用失敗



?B

已發(fā)送,但不保證對方收到

write函數的返回值的含義本來(lái)就是這樣 ?


第29題:


?HTTP 應答中的 500 錯誤是:

?????

A? 服務(wù)器內部出錯

B? 文件未找到

C? 客戶(hù)端網(wǎng)絡(luò )不通

D? 沒(méi)有訪(fǎng)問(wèn)權限



?A

403:禁止訪(fǎng)問(wèn);

404:找不到該頁(yè)面;

503:服務(wù)器繁忙;

500:內部服務(wù)器訪(fǎng)問(wèn)出錯。


第30題:


?下列關(guān)于 Android 數字簽名描述錯誤的是:

?????

A? 所有的應用程序都必須有數字證書(shū),Android系統不會(huì )安裝一個(gè)沒(méi)有數字證書(shū)的應用程序

B? Android程序包使用的數字證書(shū)可以是自簽名的,不需要一個(gè)權威的數字證書(shū)機構簽名認證

C? 如果要正式發(fā)布一個(gè)Android程序,可以使用集成開(kāi)發(fā)工具生成的調試證書(shū)來(lái)發(fā)布。

D? 數字證書(shū)都是有有效期的,Android只是在應用程序安裝的時(shí)候才會(huì )檢查證書(shū)的有效期。如果程序已經(jīng)安裝在系統中,即使證書(shū)過(guò)期也不會(huì )影響程序的正常功能。



?C

必須要使用一個(gè)合適的私鑰生成的數字證書(shū)來(lái)給程序簽名,而不能使用adt插件或者ant工具生成的調試證書(shū)來(lái)發(fā)布。


第31題:


?二、填空題

小支欲用積分兌換安仔娃娃。兌換的規則是10積分可以?xún)兑粋(gè)安仔并返還5積分。小支有200積分,最多可以?xún)兜???????? ________個(gè)安仔?(假設可以借積分)



?40

借我200積分換成40個(gè)按仔,返回的200積分還給你


第32題:


?五對夫婦甲,乙,丙,丁,戊舉行家庭聚會(huì ) 每一個(gè)人都可能和其他人握手, 但夫婦之間絕對不握手. 聚會(huì )結束時(shí), 甲先生問(wèn)其他人: 各握了幾次手? 得到的答案是: 0,1,2,3,4,5,6,7,8. 試問(wèn): 甲太太握了__________ 次手?



?4

甲太太握了4次手。 首先,可以斷言握了8次手的人和握了0次手的人是一家人。因為一個(gè)人握了0次手,說(shuō)明他(她)沒(méi)有和其他任何人握手,而握了8次手的人握了別家的所有人的手,如果握了8次手的這個(gè)人和握了0次手的這個(gè)人不是一家人,握了8次手的這個(gè)人就必然握過(guò)握了0次手的人,那么,握了0次手的人就被握了8次手的人握了1次,這就矛盾了。 其次,可以斷言握了1次手的人和握了7次手的人是一家人。因為現在大家都至少握過(guò)一次手了(和握過(guò)8次手的那個(gè)人握的),所以握過(guò)7次手的人必須和除了第一家和自己家的所有人握手,而握過(guò)1次手的人已經(jīng)不能再和任何人握手了,因此,他們只能是一家人。 同理,握了2次手的人和握了6次手的人是一家人,握了3次手的人和握了5次手的人是一家人,握了4次手的是最后一家人。 現在來(lái)看,如果甲太太握了0次手,那么甲先生必然要握8次手,而且沒(méi)有其他人可以握8次手,但是,甲先生是提問(wèn)的人,因此,他沒(méi)有握8次手,因此,甲太太也就不可能握0次手。 同理,甲太太也不可能握了1,2,3,5,6,7,8次手。 甲太太只可能握了4次手。


第33題:


?賽馬,有25匹馬,每次只能5匹馬進(jìn)行比賽,比賽只能得到5匹馬之間的快慢程度,而不是速度,請問(wèn),最少要比_____________次,才能獲得最快的前3匹馬?



?7

25匹馬,速度都不同,但每匹馬的速度都是定值,F在只有5條賽道,無(wú)法計時(shí),即每賽一場(chǎng)最多只能知道5匹馬的相對快慢。問(wèn)最少賽幾場(chǎng)可以找出25匹馬中速度最快的前3名? 每匹馬都至少要有一次參賽的機會(huì ),所以25匹馬分成5組,一開(kāi)始的這5場(chǎng)比賽是免不了的。接下來(lái)要找冠軍也很容易,每一組的冠軍在一起賽一場(chǎng)就行了 (第6場(chǎng))。最后就是要找第2和第3名。我們按照第6場(chǎng)比賽中得到的名次依次把它們在前5場(chǎng)比賽中所在的組命名為A、B、C、D、E。即:A組的冠軍是第 6場(chǎng)的第1名,B組的冠軍是第6場(chǎng)的第2名……每一組的5匹馬按照他們已經(jīng)賽出的成績(jì)從快到慢編號: A組:1,2,3,4,5 B組:1,2,3,4,5 C組:1,2,3,4,5 D組:1,2,3,4,5 E組:1,2,3,4,5 從現在所得到的信息,我們可以知道哪些馬已經(jīng)被排除在3名以外。只要已經(jīng)能確定有3匹或3匹以上的馬比這匹馬快,那么它就已經(jīng)被淘汰了?梢钥吹, 只有上表中粗體的那5匹馬是有可能為2、3名的。即:A組的2、3名;B組的1、2名,C組的第1名。取這5匹馬進(jìn)行第7場(chǎng)比賽,第7場(chǎng)比賽的前兩名就是 25匹馬中的2、3名。故一共最少要賽7場(chǎng)。


第34題:


?店主銷(xiāo)售電話(huà)卡,他以60元的價(jià)格各銷(xiāo)售了兩張。其中一張是賺了20%,另一張是虧了20%。 請問(wèn)他總共賺了_____________錢(qián)(虧了的話(huà)請用負數表示)?



?-5

有兩個(gè)電話(huà)卡,a(賺錢(qián))和b(虧錢(qián)),a的成本為x,x(1+0.2)=60,所以x=50,a賺10元

b的成本為y,y(1-0.2)=60,y=75,b虧15元

所以綜合起來(lái) 虧5元


第35題:


?三、問(wèn)答題

在審計某一開(kāi)源項目的代碼時(shí),假設有下面一個(gè)foo()子函數的實(shí)現。 從安全的角度看,會(huì )存在安全漏洞嗎?有的話(huà),請
(1)描述漏洞細節,
(2)說(shuō)明可以利用的方法,
(3) 還有該怎么修補漏洞。沒(méi)有的話(huà),也請說(shuō)明為什么。

int foo((void*funcp)()) {

????char *ptr = pointer_to_an_array;

????char buf[128];

????gets(buf);

????strncpy(ptr,buf,8)

????(*funcp)();

}



?ptr 定義在 buf 的前面。在棧上開(kāi)變量的話(huà),后開(kāi)的內存地址較小,也就是 ptr 是恰好接在 buf 數組的后面。所以如果數組越界就可以修改 ptr 指向的內存地址。


第36題:


?寫(xiě)一個(gè)函數找出一個(gè)整數數組中,第二大的數



?

int Find_Second_Max(int data[],int n)

{

????if(n<2) return -1;

????int max_num = max(data[0],data[1]);

????int sec_num = min(data[0],data[1]);

????for(int i=2;i

????{

????????if(data[i]>=max_num);

????????{

????????????sec_num = max_num;

????????????max_num = data[i];

????????}

????????else if(data[i] > sec_num)//排除等于情況

????????????sec_num = data[i];

????}

????return sec_num;

}


關(guān)聯(lián)標簽:
91久久香蕉国产线看观看软件|思思热在线视频精品996|精品无码一区二区三区水蜜桃|久久综合无码中文字幕无码|午夜亚洲AⅤ无码高潮片在线