C C 基礎易錯題整理5

2021-10-05 18:26:58 字數 2525 閱讀 3819

1.若x 為整數, c語言 正確 表達 數學 式 0≤x<5的是() 。

a.0<=x<5

b.x=0||x=1||x=2||x=3||x=4

c.x>=0||x<5

d.!(x<0||x>=5)

正確答案: d 你的答案: b (錯誤)

a選項,0<=x<5這種寫法在c語言中是錯誤的,應該寫作:x >= 0 && x < 5; 所以a選項錯誤。

b選項,題幹中說明x是整數,在x=0||x=1||x=2||x=3||x=4中,或運算子連線起來的每個表示式僅有乙個等號,表示的是賦值而非判斷相等,應該寫作x0||x1||x2||x3||x==4,所以b選項錯誤。

c選項,x>=0||x<5相比原有的數學式擴大了範圍,因此c選項是錯誤的。

d選項,!(x<0||x>=5),表示乙個數或者不小於0,或者不大於等於5,即表示這個數大於等於0且小於5,因此能夠正確表達題中的表示式,d選項正確。

綜上,本題選擇d。

2.若有以下說明,則對n的正確訪問語句是( )。

class y

;int y:

:n;y objy;

a.n=1;

b.y::n=1;

c.objy::n=1;

d.y>n

正確答案: b 你的答案: c (錯誤)

a錯在沒有寫出n的作用域。c錯在物件後用作用域識別符號,應該用點。d選項語法就錯誤了,是沒有意義的表示式,類和物件沒法比較。靜態資料成員是使用類名而不是物件名來呼叫 因為靜態資料成員只與類有關 而與具體物件無關,靜態變數是所有類物件都可以共用的,並不是乙個類的物件宣告乙個靜態變數。

3.下面程式段輸出結果是()。

short

int i=

32769;

printf

("%d\n"

,i);

a.32769

b.32767

c.-32767

d.輸出不是確定的數

正確答案: c 你的答案: d (錯誤)

short int 表示範圍: -32768~32767 ,高於最大值輸出最小值

這題考的是溢位,截斷賦值。

32769是int常量,長度是4位元組,二進位制原碼和補碼都是00000000 00000000 10000000 00000001;

將32769賦值給short變數i時,由於i長度是2位元組,發生截斷賦值,只將低16位賦值給i,高16位溢位捨棄,所以i的補碼是10000000 00000001,則原碼是11111111 11111111,值是-32767

4.以下程式的輸出結果為()。

main()

a.11,10

b.9,10

c.010,9

d.10,9

正確答案: b 你的答案: a (錯誤)

0開頭是八進位制,0x是十六進製制

八進位制的10是十進位制的8。

5.下面程式的執行結果:

class a

;class b : public a

;void

seta

(a* data,

int idx)

intmain

(int argc,

char

*ar**)

for(

int i=

0; i<4;

++i)

return0;

}

a.11111111

b.12121212

c.11112222

d.21212121

e.22221111

正確答案: e 你的答案: d (錯誤)

這道題應該注意 指標型別加減 時步長的問題。

a 大小為 4

b 大小為 8

那麼:void seta(a* data, int idx)

1)由於傳入的實參為b型別,大小為8,而形參為a型別,大小為4

data[idx] 取 data + idx 處的元素,這時指標 data加1 的長度不是乙個b長度,而是乙個a長度,或者說是1/2個b長度。這時該函式中 data[0~3] 指向的是原 data[0].a,data[0].b,data[1].a,data[1].b,

由於隱式型別轉換的緣故,data[0].a, data[0].b,data[1].a,data[1].b 處的值全部由於 data[idx].a = 2; 操作變為 2。

這道題如果改為void seta(b* data, int idx),那麼形參中data指標加1步長為8,結果就是21212121。但是由於步長為4,所以結果就是 22221111。

2)因為seta函式引數為類a的指標,所以每當指標+1,指向的是下乙個long型別資料,不是data[1].a,而是data[0].b的位址,所以前面4個資料被賦值為2

Linux易錯題整理

1.etc目錄存放使用者密碼資訊。2.當登入linux時,乙個具有唯一程序id號的shell將被呼叫,這個id是 b a.nidb.pidc.uid d.cid 3.當執行在多使用者模式下時,用ctrl alt f 可以切換6個虛擬使用者終端 4.linux啟動的第乙個程序init啟動的第乙個指令碼...

python基礎易錯題

1.以下 輸入什麼 class person a 1 def init self pass defgetage self print name p person p.getage 結果為 main 2.為了讓下面這段 執行,需要增加哪些 class a object def init self,a,...

c c 易考點整理

對於平時的考試以及找工作的筆試 面試,c c 是必考點,接下來,就對一些易考易錯點進行整理,後續在學習過程中,遇到新的問題會進行補充。new delete 與 malloc free 的區別 malloc 和free 不在編譯器控制許可權之內,不能把建構函式和析構函式的任務強加給他們。include...