牛客網陣列專項練習(一)

2021-10-03 03:32:57 字數 4673 閱讀 8680

1、要表示10個學生的成績,下列宣告並初始化陣列正確的是()

正確答案: d   

int score=new int[ ]
int score[10]
int score=new int[9]
int score=new int[10]
陣列初始化有三種方式:

動態初始化:陣列定義與為陣列分配空間和賦值的操作分開進行;

靜態初始化:在定義數字的同時就為陣列元素分配空間並賦值;

預設初始化:陣列是引用型別,它的元素相當於類的成員變數,因此陣列分配空間後,每個元素也被按照成員變數的規則被隱式初始化

public class test ;

//int b = ;兩者都可以

//預設初始化

int c = new int[10];

//int c = new int[10];兩者都可以 }}

a選項初始化沒有給陣列長度,編譯不過去;b選項寫法不規範,編譯不過去;c選項資料給錯

2、合法的陣列說明語句是(  )

正確答案: d   

int a = "string";
int a[5] = ;
char a = "string ";
char a = ;
建立陣列時必須明確規定大小或內容。陣列變數的宣告,和建立陣列可以用一條語句完成,如下所示:

datatype array = new datatype[arraysize];

資料型別 陣列名=new 資料型別[長度];

建立陣列只指定長度但不指定內容

資料型別 陣列名=new 資料型別;

建立陣列指定內容(指定長度)

另外,你還可以使用如下的方式建立陣列。

datatype array = ;

資料型別 陣列名=;

建立陣列指定內容(指定長度)

3、設有序表的關鍵字序列為,當用二分查詢法查詢鍵值為35的結點時,經()次比較後查詢成功。

正確答案: c   你的答案: c (正確)

a.  2

b.  3

c.  4

d.  6

考察的是二分法查詢基本過程原理。

基本過程如下:

將待查詢有序數列中間記錄位置的關鍵字42與查詢關鍵字35做比較,由於42>35,則繼續查詢中間位置的前乙個子表

根據以上第1步形成的待查詢有序數列為中間記錄位置關鍵字為6,與查詢關鍵字35做比較,由於6<35,則繼續查詢中間位置後乙個子表

根據以上第2步形成的待查詢有序序列為中間記錄位置關鍵字為18,與查詢關鍵字35做比較,由於18<35,則繼續查詢中間位置後乙個子表

根據以上第3步形成的待查詢有序序列,中間關鍵字等於待查關鍵字35所以查詢成功

4、若有以下定義和語句:

inta[10]=,*p=a;

則不能表示a陣列元素的表示式是

正確答案: b   

*p
a[10]
*a
a[p-a]
a:相當於a[0]

b:以為陣列的下標從0開始,所以10越界。

c:相當於a[0]

d:p和a指向同乙個陣列,可以做加減法(如果p和a不是指向同一陣列則會出錯),得到的值為整數。此題為0。所以d也相當於a[0]。

5、設有陣列a[i,j],陣列的每個元素長度為3位元組,i的值為1到8,j的值為1到10,陣列從記憶體首位址ba開始順序存放,當用以行為內存放時,元素a[5,8]的儲存首位址為()

正確答案: a   

ba+141
ba+180
ba+222
ba+225
(4*10+7)*3=141 ,注意陣列是從1開始計算  

6、a為整數陣列, n為a的陣列長度,請問執行以下**,最壞情況下的時間複雜度為____。

voidfun(inta,intn)

}

}

}

正確答案: b   你的答案: b (正確)

o(n)
o(n^2)
o(nlog(n))
o(log(n))
o(n^3)
無法確定
題目演算法為氣泡排序法,其在最壞的情況下需要進行n(n-1)次運算,所以時間複雜度為n2

7、若有定義:

int c[4][5],( *pc)[5];

pc=c;

那麼,下列對陣列c的元素引用正確的是( )。

正確答案: d   你的答案: d (正確)

pc+1
* (pc+3)
* (pc+1) +3
* (*pc+2)
pc是乙個陣列指標(指向陣列的指標),指向列數為5的二維陣列,pc = c,表示pc指向二維陣列的第一行,pc+1偏移一行,一行5個元素。*pc得到二維陣列c的第一行陣列的首位址,+2偏移到c[0][2]的位址,解引用就得到資料2。c[4][5]可以理解為4個長度為5的一位陣列,這四個一維陣列的位址要用陣列指標存放。

8、在程式設計中,要對兩個16k×16k的多精度浮點數二維陣列進行矩陣求和時,行優先讀取和列優先讀取的區別是()

正確答案: b   

沒區別
行優先快
列優先快
2種讀取方式速度為隨機值,無法判斷
如果陣列很大的話應該是行優先快,因為陣列在記憶體中是按行優先儲存的,在虛存環境下,如果整個陣列沒有在記憶體中的話可以比列優先減少記憶體換進換出的次數。就算整個陣列都在記憶體中,列優先訪問a[i][j]還得計算一次乘法,行優先只需加一就可以了,這個可以忽略

9、選項**中能正確運算元組元素的是()

intmain(),};

for(inti=0;ifor(intj=0;j//訪問二維陣列a的值

//選項**

}

}

}

正確答案: a b   

*(*(a+i)+j)=1
*(a[i]+j)=1
**(a+i)[j]=1
*((a+i)+j)=1
陣列名當被直接使用時,是乙個指向陣列首位址的指標。如果陣列是***陣列,那麼陣列名是指向第一行陣列的首位址,而不是第一行第一列單個元素的位址,所以*(a+i)與a[i]是乙個意思,當直接用a[i]時代表的是該一維陣列的首位址,所以*(a[i]+j)是與a[i][j]等效,所以ab選項正確 

10、下列說法正確的是()

正確答案: a b d  

二維以上的陣列其實是一種特殊的廣義表
陣列一旦建立,結構的元素個數和元素間的物理儲存關係就不再變化
陣列是一種線性結構,因此只能用來儲存線性表
陣列採用順序儲存方式表示
a:廣義表:廣義表(lists,又稱列表)是一種非線性的資料結構,是線性表的一種推廣。二維以上的陣列其實是一種特殊的廣義表。

b,d:由於陣列一般不做插入或刪除操作,也就是說,陣列一旦建立,結構的元素個數和元素間的關係就不再變化。因此,陣列採用順序儲存方式表示是自然的事情了。

c:一維陣列是線性結構,但也可以用來儲存二叉樹這種非線性結構。

***陣列,矩陣是非線性結構。

牛客網專項練習(七)

1 以下哪個資料結構不是多型資料型別 正確答案 d 棧廣義表有向圖字串分析 多型就是資料元素的型別不確定,字串的每個元素始終都是字元 char 而不會是別的型別。比如棧可以是整數棧 字元棧 物件棧等等。但是字串,它的元素必然是字元。2 以下資料結構中,是非線性資料結構 正確答案 a 你的答案 a 正...

牛客網專項訓練總結 2

q 陣列就是矩陣,矩陣就是陣列,這種說法 x a 陣列 中的元素可以是字元等,矩陣中的只能是數。q 陣列a 1.5,1.6 的每個元素佔5個單元,將其按行優先順序儲存在起始位址為1000的連續的記憶體單元中,則元素a 5,5 的位址為 1140 q 什麼是 順序表?a 順序表 是在計算機記憶體中以陣...

牛客專項練習1 python

1.有如下類定義,下列描述錯誤的是?d class a object pass class b a pass b b a.isinstance b,a trueb.isinstance b,object truec.issubclass b,a trued.issubclass b,b true解答...