嵌入式軟體測試題(C語言)V1.0

來源:互聯網
上載者:User

標籤:const   lse   arch   定義   statement   正確答案   case   ==   def   

嵌入式軟體測試題(C語言)V1.0

 

以下50個選擇題,每題都可能存在一個或多個正確答案,請找出所有正確答案填在每題對應的括弧中。多選、錯選、漏選或不選,均不得分。每題2分。總計100分。

為了縮短篇幅和節約大家的時間,試題中的代碼可能不是完整的代碼,答題時請不用考慮代碼是否具有可編譯和可執行性,僅分析代碼本身即可。

 

1、定義一個數組int a[2] = {1,3},那麼a的值是(   D     )

A、0;  B、1;  C、3;  D、不能確定;

 

2、有如下代碼:

float a = 123.45678;

if(123.45678 == a)

{

  printf(“a = 123.45678”);

}

else if(123.45678 > a)

{

  printf(“a > 123.45678”);

}

else if(123.45678 < a)

{

  printf(“a < 123.45678”);

}

else

{

  printf(“不能確定”);

}

 

請問上述代碼輸出的結果有可能是(   ABC     )

A、a = 123.45678;  B、a > 123.45678;  C、a < 123.45678;  D、不能確定;

 

3、在一台32位的PC上運行下述代碼,結果可能是(   C     )

       int *a = NULL;

       char b[8] = {0};

       printf(“sizeof(a) = %d,sizeof(b) = %d”, sizeof(a),sizeof(b));

 

A、sizeof(a) = 2,sizeof(b) = 2;     B、sizeof(a) = 4,sizeof(b) = 4;

C、sizeof(a) = 4,sizeof(b) = 8;     D、sizeof(a) = 8,sizeof(b) = 8;

 

4、下述代碼運行後,哪些值可以是變數X的值(   AC     )

       X = Y ^ 0x80;

       X = X & 0xF0;

A、0xF0;   B、0x0F;   C、160;     D、112

 

5、下述代碼運行後,哪些值可以是變數R的值(   BCD     )

       int a;

       ……  /*此處忽略若干代碼*/

       R = (a+1) % 0xABCD;

 

A、0xABCD;            B、0;         C、256;     D、1024;

 

6、代碼“const int a[2] ={5, 2};”中const的作用是(   BD     )

A、修飾a;                     B、修飾{5, 2};

C、說明a是唯讀;    D、說明數組a中儲存的內容是唯讀;

 

7、關鍵字“NULL”的含義是(   C     )

A、未初始化的指標;    B、未定義的指標;

C、null 指標;                    D、整型的“0”;

 

8、下述代碼可能的作用是(    C    )

              int a,b;

              ……  /*此處忽略若干代碼*/

              a = a ^ b;

              b = a ^ b;

              a = a ^ b;

 

A、求a、b的和;          B、判斷a、b的大小關係;

C、交換a、b的值;      D、加密a、b的值;

 

9、如果在一個大位元組序(大端)的32位系統中定義變數:“unsigned long testCpuArchitecture = 0x12345678;”,那麼“*(unsigned char*)&testCpuArchitecture”的值應該是(    A    )

A、0x12;   B、0x34;   C、0x56;   D、0x78

 

10、在一個32位的系統中有下述代碼,則sizeof(A_BIT_T)和sizeof(bitMap)的值分別是(   B     )

typedef unsigned char uint8;

typedef struct{

       uint8 bit : 1;

}A_BIT_T;

 

A_BIT_T bitMap[16] = {0};

 

A、1,2;   B、1,16; C、4,2;   D、4,16;

 

11、一個指標的定義為:“char  *ptr = NULL;”,則下列表述正確的有(    AB    )

A、指標所指向的內容可以被修改;

B、指標本身的值是可以被修改的;

C、指標本身所在的地址可以被修改;

D、指標只能指向一個存放了字元的儲存位置;

 

12、一個函數如果沒有“return”語句,那麼這個函數將(    D    )

A、一直無限迴圈運行;       B、可能在任意一句語句處退出;

C、隨時可能崩潰;        D、運行完成後退出;

 

13、宏定義的特點有(   ABD     )

A、可以被多個函數調用;          B、可能存在副作用;

C、運行效率比定義函數高;      D、多次調用後佔用的代碼儲存空間比函數多;

 

14、在一個“while”迴圈中,允許使用“break”和“continue”的數量是(   D     )

A、兩者只能使用一個,每個只能使用一次;     

B、break可以使用多次,continue只能一次;

C、break只能使用一次,continue可以多次;    

D、兩者均不限次數;

 

15、以下是static關鍵字的作用的有(    ABC    )

A、修飾局部變數,表示此變數只能在當前函數內部被訪問,其儲存在堆和棧之外;

B、修飾函數,表示此函數只能在當前檔案內部被訪問;

C、修飾全域變數,表示此變數只能在當前檔案內部被訪問;

D、修飾函數的入參,表示此入參是唯讀,不可被修改;

 

16、下列代碼運行結束後,i的值是(   B     )

       int i = 1;

       switch(i)

{

  case 0:

         i++;

         break;

  case 1:

         ++i;

  case 3:

         i++;

         break;

case 4:

         i++;

  default:

         ++i;

}

 

A、2             B、3             C、4             D、5

 

17、在一個32位的系統中有如下定義,則sizeof(U)的值是(    C    )

       union    {

                     char c;

                     char *p;

}U;

A、1             B、2             C、4             D、8

 

18、“野指標”是(    BD    )

A、未定義的指標;                             B、沒有被賦值的指標;

C、指向的地址確定,但其中的內容是未知的;  D、指向的地址是不確定的指標;

 

19、標頭檔中的ifndef…define…endif的作用是(    B    )

A、說明這是一個標頭檔;                       

B、防止被重複包含;

C、最佳化標頭檔,使其佔用更少的儲存空間;

D、定義標頭檔的名稱,以便被引用;

 

20、下列代碼,哪幾行是編譯時間有錯誤或運行時會發生異常的(   C     )

1:char a;

2:char *str=&a;

3:strcpy(str,"hello");

4:printf(str);

 

A、第1行;             B、第2行;             C、第3行;             D、第4行;

 

21、為什麼將結構體資料傳遞到函數內部時,建議函數的入參使用結構體指標而不是結構體(   BD     )

A、節省堆;      B、節省棧;      C、節省代碼量;     D、運行效率更高;

 

22、在32位的系統中有一個雙向鏈表,每個鏈表成員存放三個字元資訊,則一個鏈表成員至少需要佔用幾個位元組的儲存空間(    C    )

A、3;         B、9;         C、12;              D、18

 

23、可用於實現迴圈隊列的資料結構可以是(    BC    )

A、平衡二叉樹;     B、數組;   C、雙向鏈表;  D、無衝突HASH表

 

24、在資料成員個數較多且資料內容較隨機的情況下,尋找一個成員的平均效率最高的資料結構是(   D     )

A、平衡二叉樹;     B、數組;   C、雙向鏈表;  D、無衝突HASH表

 

25、最後進入棧的資料存放在棧的(    A    )

A、頂部;   B、中部;   C、底部;   D、可以是任意位置;

 

26、假設a = 100,b = 1000,則下面兩個for迴圈,哪個效率更高(    A    )

甲:

       for(i=0; i<a; i++)

       {

              for(k=0; k<b; k++)

              {

                     printf(“i=%d, k=%d\n”, i, k);

              }

       }

 

乙:

       for(i=0; i<b; i++)

       {

              for(k=0; k<a; k++)

              {

                     printf(“i=%d, k=%d\n”, i, k);

              }

       }

 

A、甲;       B、乙;       C、一樣;   D、無法確定;

 

27、FIFO的特點有(    B    )

A、FIFO滿的時候,會導致成員資料錯亂;

B、最先進入的成員最先出來;

C、FIFO空的時候,其內部所有儲存單元的值都是0;

D、它和棧是等效的;

 

28、常見的排序演算法有(   AB     )

A、冒泡法;      B、插入法;      C、遍曆法;      D、倒序法;

 

29、在一個有1000個成員的整型數組中,其成員都是按從小到大排列的,則平均來看尋找是否存在某一個值的最快演算法是(    C    )

A、遍曆法;      B、隨機法;      C、二分法;      D、倒序法;

 

30、如果一個事件需要在同時滿足5個條件的情況下才會運行,則在使用形如:

if(a && b && c && d && e)

{

  …….//待執行語句;

}

的語句時,應該將這5個條件按照什麼順序放置。(   A     )

A、發生機率從低到高排列;      B、發生機率從高到低排列;     

C、隨機放置;                D、發生機率中等的放在最前面;

 

31、以下屬於枚舉特點的是(    AB    )

A、可以定義成一種資料類型;         B、枚舉值必須是整數;

C、枚舉值必須是連續的;                 D、枚舉和宏定義是一樣的;

 

32、如果一段正常的代碼中出現了一個多餘的分號,形如:

       jar = QUART;

       printf("%d,", jar);

       jar = jar + PINT;

       ;

       printf("%d\n", jar);

則這段代碼會(   D     )

A、無法編譯通過;                             B、能編譯通過,但不能運行;

C、能編譯通過,但運行時可能程式會崩潰;      D、無任何影響;

 

33、有如下一段代碼,即在if語句的後面多了一個分號,那麼(    CD    )

if(a && b) ;

{

  printf(“hello word!\n”);

}

 

A、不論a、b是何值,都不會列印出“helloword!”;             B、無法編譯通過;

C、不論a、b是何值,都會列印出“helloword!”;          D、能編譯通過;

 

34、下面的代碼存在的問題是(    BC    )

       char a = 0;

       char *p;

       while(a < = 255)

       {

              p = malloc(100);

              ……

              a++;

}

  free(p);

  p = NULL;

 

A、存在野指標;     B、存在記憶體流失; C、存在死迴圈;     D、沒有任何問題;

 

35、有如下代碼:

       enum Liquid {OUNCE = 1,CUP = 2,PINT = 16,QUART = 32, GALLON = 128};

 

       enum Liquid jar;

      

       jar = QUART;

       printf("%d,", jar);

       jar = jar + PINT;

       printf("%d\n", jar);

則列印出來的內容將會是(    C    )

 

A、32, 0;   B、0, 0;     C、32, 48; D、32, 隨機值;

 

36、下列代碼存在的問題有(   C     )

typedef struct DATA_MEMBER_S{

       struct DATA_MEMBER_S *p_nest;

       int a;

       int b;

       char c[4];

}DATA_MEMBER_T;

 

int main()

{

       DATA_MEMBER_T d = {.p_nest = NULL, .a = 1, .b = 2, .c = "abcd"};

       printf("%d, %d, %s\n",d.a, d.b, d.c);

}

 

A、結構體定義不正確;              B、結構體初始化有誤;

C、列印語句可能會出錯;          D、沒有任何問題;

 

37、一個函數(   CD     )

A、必須有入參;     B、必須有傳回值;

C、可以調用自己; D、傳回值可以是另一個函數;

 

38、do{…}while()和while(){…}語句的特點有(    ACD    )

A、前者至少會執行一次{…}中的語句;

B、後者有可能會死迴圈,而前者不會;

C、兩個都可以使用break跳出;

D、兩者都可以使用continue語句;

 

39、以下是

for(statement1;statement2;statement3)

{

…/*迴圈主體*/

}

語句的特點的是(   D     )

A、statement1、statement2、statement3三個運算式不能同時為空白;

B、for的運行效率比while高;

C、for迴圈主體不能使用break語句;

D、for迴圈主體可以使用continue語句;

 

40、以下說法正確的是(   AB     )

A、if…else…語句和switch…case…語句可以相互嵌套使用;

B、能使用switch語句的情境都可以用if…else…類的語句實現;

C、能使用if…else…類語句的情境都可以用switch語句實現;

D、在switch…case…語句主體中使用continue語句會跳轉到switch頭部重新開始執行;

 

41、在有N個進程的系統中,長時間平均來看每個進程的執行時間是(    D    )

A、1/N;     B、1/2N;   C、1/N2;    D、不確定的

 

42、作業系統中進程“時間片輪轉”的作用是(    C    )

A、系統進程與應用進程輪流程執行;

B、高優先順序進程與低優先順序進程輪流程執行;

C、同優先順序進程間輪流程執行;        

D、進程與中斷輪流程執行;

 

43、跨進程全域資源共用時,可以用哪些方式進行保護(    ABCD    )

A、二進位訊號量; B、計數制訊號量;

C、關閉進程調度; D、關閉所有中斷;

 

44、建立一個進程時,必不可少的參數有(    ABC    )

A、進程可用的棧深度;              B、進程優先順序;

C、進程入口函數;               D、進程的終止時間;

 

45、使用無“優先順序繼承”機制的核心對象(比如普通二進位訊號量)對全域資源進行保護時,可能會導致(    B    ),應該使用互斥鎖(mutex)。

A、不能有效保護資料完整性;         B、進程優先順序翻轉;

C、進程掛起;                       D、核心崩潰;

 

46、兩個進程間互動資訊的方式可以有(    ABC    )

A、全域變數;         B、訊號量;            

C、隊列或管道;            D、中斷;

 

47、被掛起(suspend)的進程什麼時候才能恢複運行(    B    )

A、逾時時間到了; B、被另一個進程或中斷喚起;

C、自動隨時喚起; D、等到其它進程都不啟動並執行時候;

 

48、一個進程的棧空間溢出後可能會導致(    A    )

A、系統崩潰;  B、進程掛起;  C、進程被刪除;     D、進程被重新啟動;

 

49、如果一個高優先順序的進程進入了“死迴圈”,始終佔據CPU不釋放,可能會導致(    AB    )

A、CPU使用率高;        B、低優先順序進程得不到運行; 

C、中斷得不到執行;    D、進程調度器會崩潰;

 

50、如果一個進程頻繁申請動態記憶體(比如使用malloc)而不釋放,可能會導致(    ABD    )

A、其它進程申請不到動態記憶體;     B、本進程申請不到動態記憶體;

C、進程無法切換;               D、動態記憶體耗盡;

嵌入式軟體測試題(C語言)V1.0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.