H3C筆試題目

這幾天一直在找工做的,前幾天去h3c筆試了一把,題目出的還能夠,偷偷記了點,有須要的人拿去 數組

一、如下描述正確的有(AD 函數

A1個字節(byte)由8個比特(bit)組成 ui

Bsigned char類型的取值範圍是-127~128 spa

C0xFFFFFFFF4字節無符號數中最大的 指針

Dunsigned char類型的取值範圍是0~255 string

解析: it

signed char的取值範圍是-128~127,爲-(2^8)~(2^8-1) io

0xFFFFFFFF是無符號整型的最大值,若是包含浮點數類型,那麼他就不是最大的了。 編譯

二、如下代碼的運行結果(D 變量

#define ADD(x, y) (x + y)

#define SUB(x, y) (x)-(y)

#define MUL(x, y) (x * y)

 

Unsigned int uiA

uiA = MUL(ADD(x, y), SUB(6, 3));

A、uiA=15 BuiA=33

CuiA=18 DuiA=63

解析:預編譯後展開的式子:uiA = ((9 + 2) * (6) - (3));

三、如下代碼運行的結果(B

代碼I

usigned int uiA

uiA = 0x55 & 0x66) ^ (0x77 | 0x88);

代碼II:

unsigned int uiB;

uiB = (0xAA << 3) | (0xBB << 2) | (0xCC << 1) | 0xDD;

代碼I,uiA = 0xAA代碼I,uiA = 0xBB

代碼II,uiB=0xFFFFFFFF代碼II,uiB=0xAABBCCDD

四、如下語句中,可以判斷uiNum(unsigned int)能夠被16整除的有(AC)

A if(((uiNum / 16) * 16 == uiNum)

B if((uiNum % 15) == 0)

C if((uiNum & 0x0F) == 0)

D if(((uiNum >> 5) << 5) == uiNum)

解析:B改爲if((uiNum%16) == 0

D改爲if(((UiNum >> 4) << 4) == uiNum)

五、關於如下代碼描述正確的有(AB

代碼I:

const char *pcStr = 「abcdefg」;

 

daimaII:

void string_sizeof(char szStr1[10])

{

char szStr2[10] = 「12345」;

printf(「%u, 「, sizeof(szStr1));

printf(「%u\r\n」, sizeof(szStr2));

return;

}

 

代碼III:

typedef unsigned int *pui_t1;

#define pui_t2 unsigned int *

pui_t1 puiA, puiB;

pui_t2 puiC, puiD;

 

代碼IV:

unsigned int uiA = 100;

printf(「%s\r\n」, uiA);

 

A、代碼Iconst修飾符代表pcStr指向的內容不能更改;

B、代碼II,程序運行結果是「4,10」;

C、代碼IIIpuiApuiBpuiCpuiD都是unsigned int *類型的變量;

D、代碼IV,打印unsigned int時不該該使用「%s」,會致使程序訪問非法地址。

 

解析:const char *pcStrchar * const pcStr的區別.

BszStr1是數組名,至關於經過函數參數的形式傳遞了一個指針,因此是4;szStr2是局部變量數組,sizeof至關於求數組大小因此是10.

C中使用define定義的至關於替換因此展開以後unsigned int * puiC, puiD因此很明顯puiD不是unsigned int *類型

D%s須要傳遞一個地址過來,uiA是個變量值,因此會出錯,若是改爲&uiA就能夠了.

六、關於結構和聯合體的大小,如下描述正確的有(C

struct A_S

{

unsigned short us1;

unsigned short us2;

unsigned short us3;

};

struct B_S

{

unsigned char uc1;

unsigned int  ui2;

unsigned short us3;

};

union C_U

{

unsigned short us1;

unsigned short us2;

unsigned short us3;

};

union D_U

{

unsigned char uc1;

unsigned int  ui2;

unsigned short us3;

};

A、結構體struct A_S的大小是2

B、結構體struct B_S的大小是7

C、聯合體union C_U的大小是2

D、聯合體union D_U的大小是7

解析:結構體的大小在默認狀況下須要天然邊界對齊。因此A_S大小是6B_S大小12,

聯合體大小是其中類型最大的一個的大小。

7、關於鏈表操做如下描述正確的有(ABC

struct SLL

{

struct SLL *pstNext; /*下一節點*/

};

struct DLL

{

struct DLL *pstNext; /*下一節點*/

struct DLL *pstPrev; /*前一節點*/

};

A、單鏈表,如下代碼能夠刪除節點B

pstA->pstNext = pstA->pstNext->pstNext;

free(pstA->pstNext);

B、單鏈表,如下代碼能夠刪除節點B

pstA->pstNext = pstB->pstNext;

free(pstB);

C、雙鏈表,如下代碼能夠刪除節點B

pstB->pstPrev->pstNext = pstB->pstNext;

pstB->pstNext->pstPrev = pstB->pstPrev;

free(pstB);

D、雙鏈表,如下代碼能夠刪除節點B

pstA->pstNext = pstA->pstNext->pstNext;

pstA->pstNext->pstPrev = pstA;

free(pstB);

解析:D改爲:

pstA->pstNext = pstA->pstNext->pstNext;

pstA->pstNext->pstNext->pstPrev = pstA;

free(pstB);

就能夠了.

八、如下代碼的運行結果是(B)

代碼I:

unsigned int uiCount = 0;

while(uiCount <= 5)

{

if (unCount <= 5)

continue;

++uiCount;

}

printf(「uiCount=%u\r\n」, uiCount);

 

代碼II:

unsigned int uiCount = 0;

do

{

uiCount++;

}while(uiCount >= 5);

printf(「uiCount=%u\r\n」, uiCount);

 

代碼III:

unsigned int uiCount = 0;

switch (unCount)

{

case 0:

uiCount = 5;

default:

uiCount = 1;

}

printf(「uiCount=%u\r\n」, uiCount);

 

代碼IV:

unsigned int uiCount = 0;

for( ; uiCount <= 10; uiCount++)

if (uiCount == 5)

breakl

printf(「uiCount=%u\r\n」, uiCount);

 

A.代碼I, uiCount=5

B.代碼II, uiCount=1

C.代碼III, uiCount=1

D.代碼IV, uiCount=6

解析:代碼I會陷入無限循環,continue會在uiCount<=5時跳過++uiCount,uiCount的值是0,因此沒有機會++uiCount

代碼IV,uiCount=5,break以後uiCount++沒有機會執行了.

相關文章
相關標籤/搜索