作者 謝恩銘,公眾號「程序員聯盟」(微信號:coderhub)。
轉載請注明出處。
原文:http://www.lxweimin.com/p/30d4754ea2b7
《C語言探索之旅》全系列
內容簡介
- 前言
- 練習題
- 練習題答案
- 習作
- 第三部分第一課預告
1. 前言
上一課和上上一課我們完成了一個游戲:
這一課我們來做一些練習題,還有一個小的習作。
這些練習題是幫助大家鞏固知識的,其實不難。不看答案來完成這 15 道題目吧,都是單選題。
2. 練習題
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.如果我寫 &variable,我得到的是什么?
A. variable 的地址
B. variable 的值
C. variable 指向的變量的值
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. 當我們丟失一個指向字符串的指針時造成的內存泄露
3. 練習題答案
- A
- A
- A
- A
- C
- C
- A
- C
- C
- B
- A
- A
- B
- B
- A
4. 習作
《用自己的語言解釋指針》
總是我說,可能有點嘮叨。這回換聽官們說說唄。
指針是 C語言的精華,也是 C語言之所以很靈活強大且具有陷阱的原因。
如果學習 C語言,不理解指針,那就沒掌握精髓。
所以在本次的“習作”中,我們要求你用自己的語言來解釋指針,看看大家理解得如何。
如果記不太清楚了,請大家復習我們之前關于指針的那一課:C語言探索之旅 | 第二部分第二課:進擊的指針,C語言的王牌!
將你的解釋發在留言中即可。
不要一上來就長篇大論,先捋一捋一些指針的基本概念會更好。
即使你不留言,也請自己多看看指針的知識點,可以閱讀《C和指針》,《C專家編程》,《C語言深度解剖》等書。
5. 第三部分第一課預告
今天的課就到這里,一起加油吧!
我是 謝恩銘,公眾號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標桿直跑」