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語言程式的設計具有靈活、實用、高效的特點。