2020年度鑽石C++C學習筆記(2)–《博學谷》

2020年度鑽石C++C–《博學谷》

1.以下標示符中命名合法的是A

 

A、__A__

B、ab.c

C、@rp

D、2Y_

2. a 和 b 均為 double 型變數,且a=5.5、b=2.5,則表達式(int)a + b / b的值是D

 

A、6.500000

B、6

C、5.500000

D、6.000000

3.C語言中的基本數據類型包括D

 

A、整型、浮點型、字元型、邏輯型、枚舉

B、整型、浮點型、字元型、枚舉

C、整型、浮點型、字元型、邏輯型

D、整型、浮點型、字元型

4.一個C程式的執行一般都是從A

 

A、本程式的main()函數開始,到main()函數結束

B、本程式文件的第一個函數開始,到本程式文件的最後一個函數結束

C、本程式的main()函數開始, 到本程式文件的最後一個函數結束

D、本程式文件的第一個函數開始,到本程式main()函數結束

5.對兩個字元數組a和b進行初始化 char a[]=”ABCDEF”; char b[]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}; 則以下敘述正確的是D

 

A、a與b數組完全相同

B、a與b數組大小相同

C、a和b中都存放字元串

D、數組a比數組b長度長

6.若定義int a[3][4] = { 0 }; 則對a數組元素的非法引用是B

 

A、a[0][2*1]

B、a[1][4]

C、a[4-2][0]

D、a[2][3]

7.下面不正確的字元串常量是A

 

A、’abc’

B、”12’12”

C、”0″

D、” “

8.在多層嵌套的條件結構語句 if-else 中, else 子句總是與(  B  )配對

 

A、其距離最近的尚未配對的if

B、其之前最近的尚未配對的if

C、其之後最近的尚未配對的if

D、其同一行上的尚未配對的if

9.x、y、z被定義為 int 型變數,若從鍵盤給x、y、z輸入數據,正確的輸入語句是B

 

A、printf(“%d%d%d”, &x, &y, &z);

B、scanf(“%d%d%d”, &x, &y, &z);

C、scanf(“%d%d%d”, x, y, z);

D、printf(“%d%d%d”, x, y, z);

10. int x = 1, y = 1; 表達式 (!x || y–)的值是B

 

A、0

B、1

C、2

D、-1

11.若變數a已正確定義,以下非法的表達式是B

 

A、a /= b + c

B、a % (4.0)

C、a = 1 / 2 * ( x = y = 20, x * 3)

D、a = b = c

12.若有數組定義int a[] = {1,3,5,4,9,2,7,6,8,10}; int i = 4; 則 a[a[i]] 元素的值等於D

 

A、4

B、9

C、8

D、10

13.程式 char c[5] = {‘a’, ‘b’, ‘\0’, ‘c’, ‘\0’};  printf(“%s”, c);的運行結果是B

 

A、’a”b’

B、ab

C、ab c

D、ab0c0

14.判斷字元串 a 是否大於 b,應當使用D

 

A、if (a > b)

B、if (strcmp(a, b))

C、if (strcmp(b, a) > 0)

D、if (strcmp(a, b) > 0)

15.如果執行語句 for(int a = 0, b = 0; b != 100 && a < 5; a++) scanf(“%d”, &b); 那麼scanf()函數最少執行(  D   )次

 

A、0

B、6

C、5

D、1

16.表示關係 12 <= x <= y 的C語言表達式為B

 

A、(12 <= x <= y)

B、(12 <= x) && (x <= y)

C、(12 <= x) <= y)

D、(12 <= x) || (x <= y)

17.使用語句 scanf(“a=%s,b=%d”, &a, &b);輸入數據時,正確的數據輸入是A

 

A、a=2.2,b=3

B、a=2.2 b=3

C、2.2 3

D、2.2,3

18.以下關於運算符優先順序的描述中正確的是C

 

A、關係運算符 < 算術運算符 < 賦值運算符 < 邏輯與運算符

B、邏輯與運算符 < 關係運算符 < 算術運算符 < 賦值運算符

C、賦值運算符 < 邏輯與運算符 < 關係運算符 < 算術運算符

D、算術運算符 < 關係運算符 < 賦值運算符 < 邏輯與運算符

19. int x=0, y=3, z=3; 則以下表達式的值為 0 的是C

 

A、!x

B、 x < y ? 1 : 0

C、x / 2 && y != z

D、y = x || z % 2

20.

下列程式的輸出結果是( C    )

           #include <stdio.h>

 

                       int main(void)

           {

               int a = 7 ,b = 5;

                 printf(“%d\n”,b=b/a)

               return 0 ;

           }

 

 

A、5

B、1

C、0

D、不確定

 

簡答題

21.簡述C語言程式的編譯過程和每個階段生成的目標文件4分

參考答案:

1)預處理:宏定義展開、頭文件展開、條件編譯等,同時將程式碼中的注釋刪除,這裡並不會檢查語法

2)編譯:檢查語法,將預處理後文件編譯生成彙編文件

3)彙編:將彙編文件生成目標文件(二進位文件)

4)鏈接:C語言寫的程式是需要依賴各種庫的,所以編譯之後還需要把庫鏈接到最終的可執行程式中去

 

22.簡述C語言標識符的命名規則3分

 

參考答案:

1標識符使用來標識源程式中的某個對象的名字的,一個標識符由字母、數字和下劃線組成

2關鍵字可以定義變數、表達語句功能和對一些文件進行預處理,關鍵字已被編譯系統本身使用,所以用戶編寫程式時不能夠使用這些關鍵字來作為標識符,

 

 

23.字元數組與字元串是否相同?若不相同,有何區別?3分

參考答案:不相同,C語言中沒有專門的字元串變數,如果要將一個字元串存放在變數中,必須使用字元數組,即用一個字元型數組來存放一個字元串,數組中每一個元素存放一個字元。字元串:必須以‘\0’結尾字元數組:可以包含多個‘\0’

 

24.C語言中參數傳遞有什麼特點?我們應當注意些什麼?3分

參考答案:

1)數值傳遞:被調用函數中對形參的操作不影響主調用函數中的實參值。 
2)地址傳遞:可以通過被調用函數中對形參的操作來修改主調用函數中的實參值。

注意事項:用malloc 申請記憶體之後,應該立即檢查指針值是否為NULL。防止使用指針值為NULL 的記憶體。

 

25.指針與地址有什麼聯繫?在使用指針的過程中應注意哪些細節?指針類型對於程式設計有哪些意義?3分

參考答案:

1)指針保存了某個變數的地址,指針本身是一個變數,它也有自身的地址而指針的內容是某個變數的地址。注意細節: 要初始化、正確的傳遞地址方式、使用時要判斷。

2)指針可以用來有效地表示複雜的數據結構,可以用於函數參數傳遞並達到更加靈活使用函數的目的.使C語言程式的設計具有靈活、實用、高效的特點。

 

Tags: