-- 簡書作者 謝恩銘 轉載請註明出處
第二部分第十一課:練習題和習作
上一課和上上一課我們完成了一個遊戲:
這些練習題是幫助大家鞏固知識的,其實不難,特別對於有編程經驗的人來說。
不看答案來完成這15道題目吧,都是單選題。
練習題
-
1.什麼是全局變量?
A. 可以在隨處被訪問的變量
B. 變量類型任意的變量
C. 聲明在main函數裏的變量 -
2.當我們引入標準庫的頭文件,使用類似如下的哪一種方式?
A. #include <time.h>
B. #include "time.h"
C. #include {time.h}
D. #include [time.h] -
3.C語言的編譯按如下那種順序進行?(這裏其實還省略了一步:彙編(用到彙編器,就不贅述了))
A. 預處理 -> 編譯 -> 鏈接
B. 編譯 -> 鏈接 -> 預處理
C. 鏈接 -> 預處理 -> 編譯
D. 預處理 -> 鏈接 -> 編譯 -
4.如果我寫 &toto,我得到的是什麼?
A. toto的地址
B. toto的值
C. toto指向的變量的值 -
5.我們用什麼值來初始化指針?
A. NOTHING
B. 1
C. NULL
D. MAIN
E. 0_ADDRESS -
6.有代碼如下:
int number = 8; int *pointer = &number;
假設number位於內存地址5000處,而pointer這個指針位於內存地址2500處,那麼如果在接下來的程序中打印 *pointer 的值,是什麼呢?
A. 5000
B. 2500
C. 8
D. 無可預知 -
7.數組的下標從幾開始?
A. 0
B. 1
C. -1 -
8.下面哪行代碼是用於創建有10個double變量的數組?
A. double *array[10];
B. double array{10};
C. double array[10];
D. double array[9]; -
9.以下程序有一個錯誤,是哪一個?
int main(int argc, char *argv[]) { char city[100]; printf("請問您住在哪個城市 ? "); scanf("%s", &city); printf("您住在 %s, 這個城市我很熟悉 !", city); return 0; }
A. 第二個printf中的city前少了&號
B. 在city數組的定義中,city前少了*號
C. 在scanf的city前多了&號 -
10.哪一個預處理命令表明 #if的結束?
A. #elif
B. #endif
C. #ifdef
D. #ifndef -
11.結構體裏面可以包含數組嗎?
A. 可以
B. 不可以
C. 可以,但僅當數組都是同一種類型時 -
12.爲什麼通常我們更喜歡用一個函數來初始化結構體?
A. 一旦結構體做了修改,我們不需要在程序中重做此結構體的所有初始化
B. 對電腦來說,這樣速度更快
C. 這可以把我的代碼變成C++形式的 -
13.在打開一個文件後總是應該做什麼事情?
A. 關閉文件
B. 測試文件指針的有效性
C. 清空文件內容
D. 把光標放在文件首位置 -
14.如下代碼有什麼作用?
malloc(sizeof(int) * 25);
A. 在內存中申請一個25字節的int型變量
B. 在內存中申請一個int型數組,數組包含25個元素
C. 在內存中申請一個25字節的float型變量
D. 在內存中申請一個float型數組,數組包含25個元素 -
15.什麼是緩衝區溢出?
A. 存儲的字符串超出了緩衝區的最大容量
B. 在讀緩衝區時進入了死循環
C. 當我們丟失一個指向字符串的指針時造成的內存泄露
練習題答案
- A
- A
- A
- A
- C
- C
- A
- C
- C
- B
- A
- A
- B
- B
- A
習作
《用自己的語言解釋指針》
總是小編說,可能有點嘮叨。這回換聽官們說說唄。
指針是C語言的精華,也是C語言之所以很靈活強大且具有陷阱的原因。
如果學習C語言,不理解指針,那就沒掌握精髓。
所以在本次的“習作”中,我們要求大家用自己的語言(當然是中文啊,你不要給我用英語或其他語言... 哈哈)來解釋指針,看看大家理解得如何。
如果記不太清楚了,請大家複習我們之前關於指針的那一課:《指針,C語言的王牌》。
將您的解釋用留言的形式發在簡書裏即可。
不要一上來就長篇大論,先捋一捋一些指針的基本概念會更好。
我會回覆的。
即使你不留言,也請自己多看看指針的知識點,可以閱讀《C和指針》,《C專家編程》,《C語言深度解剖》等書。
第三部分第一課預告:
今天的課就到這裏,一起加油吧。
下一次我們學習: 安裝SDL