牛客網刷題筆記6-22

1.在定義函數中指定的形參,在未出現函數調用是,它們佔內存中的存儲單元。( )
A.正確
B.錯誤

答案:B
解析:
  在定義函數中指定的形參變量,在未出現函數調用時,它們並不佔用內存中的存儲單元,只有在發生函數調用時,函數中的形參才被分配內存單元。
  在調用結束後,形參所佔的內存單元也被釋放,因此形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。
  因此題中描述是錯誤的,本題選B。


2.在下面有關友元函數的描述中,正確的說法是()
A.友元函數是獨立於當前類的外部函數
B.一個友元函數不能同時定義爲兩個類的友元函數
C.友元函數必須在類的外部定義
D.在外部定義友元函數時,必須加關鍵字friend

答案:A
解析:
  在C++中友元函數是獨立於當前類的外部函數,一個友元函數可以同時定義爲兩個類的友元函數,友元函數既可以在類的內部,也可以在類的外部定義;在外部定義友元函數時,不必加關鍵字friend


3.執行"int x=1;int y=~x;"語句後,y的值爲?

答案:-2
解析:
  假設int佔2個字節,那麼1的二進制表示是 0000 0001 ,~表示按位取反,則 0000 0001變爲 1111 1110,在計算機中整數用補碼形式表示,正數的補碼是它本身,負數的補碼是原數值除符號位按位取反再加一,由補碼求原數值也是按位取反再加一,那麼 1111 1110 除符號位按位取反再加一變成 1000 0010,即 -2。


4.以下關於抽象類的說法正確的有
A.抽象類只能用作其他類的基類
B.不能使用抽象類定義對象
C.抽象類不能用作參數類型、函數返回類型或顯式轉換的類型
D.抽象類不能有構造函數和析構函數

答案:ABC
解析:
抽象類有一下幾個特點:

(1)抽象類只能用作其他類的基類,不能建立抽象類對象。

(2)抽象類不能用作參數類型、函數返回類型或顯式轉換的類型。

(3)可以定義指向抽象類的指針和引用,此指針可以指向它的派生類,進而實現多態性。


5.變量a是一個64位有符號的整數,初始值用16進製表示爲:0x7FFFFFFFFFFFFFFF;變量b是一個64位有符號的整數,初始值用16進製表示爲:0x8000000000000000。則a+b的結果用10進製表示爲多少?
A.1
B.-1
C.2^63 +2^62+…+2^2 +2^1 +2^0
D.–(2^63+2^62+…+2^2+2^1+2^0)

答案:B
解析:
鏈接:
  a+b=0xFFFFFFFFFFFFFFFF,十六進制的F對應十進制的15,再轉換成二進制則爲1111。
  所以a+b得1111 1111 1111 1111,二進制的首尾爲符號位,1位負數,0則爲正數,這裏爲1所以a+b的結果是負數。
負數在內存中存儲以補碼的形式,所以求原碼的步驟爲:

  1. 補碼-1得反碼(變爲1111 1111 1111 1110)
  2. 反碼按位取反得原碼(1000 0000 0000 0001)
  3. 轉換成二進制結果爲-1

6.下面的程序中, int32-t 表示一個有符號的 32 位整數,程序的入口是 main 函數,問最終 res 的結果是多少?
在這裏插入圖片描述
A.–(2^31+2^30+…+2^2+2^1+2^0)
B.0
C.-1
D.程序會死循環

答案:D
解析:

1.先解釋a=128怎麼溢出,轉爲-128的 這是因爲128是超出以char爲例-128-127的表示範圍的。128在有符號中沒法表示爲1000 0000,實際上他是-0,-0也就是“-128中截斷最高位”,所以我理解:128可以表示爲-128; 所以a=-128;b=-127;
2. 我再來接着我們開始計算-128-127,即-128+(-127)
注:在計算機中我們都是用補碼來計算的
-128源碼爲1 1000 0000 反碼爲1 0111 1111 補碼爲 1 1000 0000(9位)截斷最高位爲 1000 0000; //這也就是-0可以表示爲-128的原因;因爲-0源碼也是 1000 0000;
-127源碼爲1111 1111 反碼爲 1000 0000 補碼爲 1000 0001
補碼相加
-128+(-127)=1000 0000
(+) 1000 0001
= 0000 0001->補碼轉回源碼 0000 0001=1,結果大於0,繼續死循環。


7.給定一個如下所示的圖,圖中的邊代表了兩個節點間的距離。如果使用迪傑斯特拉算法對節點 1 和節點 8 求最短路徑,則當完成計算時,算得節點 1 到節點 8 的最短路徑是?同時當完成節點 1 到節點 8 的最短路徑計算時,節點 1 到哪些節點(除了 1 和 8 )的最短路徑也已經計算完畢?( )
在這裏插入圖片描述
A.最短路徑:7;已經算得最短路的節點:3,5,6
B.最短路徑:4;已經算得最短路的節點:5
C.最短路徑:4;已經算得最短路的節點:2,3,5,4
D.最短路徑:4;已經算得最短路的節點:5,6

答案:C
解析:
迪傑斯特拉最最樸素的思想就是按長度遞增的次序產生最短路徑。即每次對所有可見點的路徑長度進行排序後,選擇一條最短的路徑,這條路徑就是對應頂點到源點的最短路徑。
初始狀態:路徑長度0:(1)
路徑長度1:(1,5)
路徑長度2:(1,3)
路徑長度3:(1,3,4),(1,2)
路徑長度4:(1,5,8)
節點1到8的最短路徑長度爲4; 2,3,4,5節點的最短路徑已經計算完畢;


8.有三個程序J1,J2,J3。程序在單核CPU執行時,三個程序需要的資源如下所示:
在這裏插入圖片描述
優先級高的程序可以搶佔優先級低的程序的CPU,但不能搶佔IO。問當所有任務執行完畢時,共消耗的時間是?
A.170ms
B.160ms
C.120ms
D.130ms

答案:D
解析:
1.優先級高的先使用資源;2.按照題目中給的各進程CPU,IO順序執行;3.IO不可搶佔。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章