C Primer Plus 第02章 C語言概述 學習筆記及復習題、編程題解答
第二章 C語言概述
1. 解析第一個C程序
一個基本的程序結構包含如下部分:
#include
程序由一個或多個函數組成,必須有main() 函數。
函數由 函數頭 和 函數體 組成。
函數頭包含函數名、傳入函數的信息類型和函數的返回類型。
函數體被花括號括起來,由一系列語句、聲明組成。
2. 提高程序可讀性的技巧
使用有意義的變量名和函數名
使用注釋(模塊太大時備注說明)
在函數中用空行分隔概念上的多個部分。
每條語句各占一行
分行易讀,配合分號,可以更好確定語句開始和結束。
3. 調試程序
Bug:程序的錯誤
調試(Debug):找出并修正程序錯誤的過程。
不遵循C語言的規則,把有效的C符號放在正確的位置。
一般使用 編譯器(gcc) 時會報錯,一般情況下,報錯的位置比實際錯誤位置要滯后一行。
編譯器檢測不到語義錯誤,因為這類錯誤未違反C語言的規則。
遵循C規則,但結果不正確的錯誤屬于語義錯誤。
程序狀態:在程序的執行過程中,某給定點上所有變量值的集合。
跟蹤程序狀態的3個方法
自己模擬計算機逐步執行程序。
小部分程序實用,大型程序不適合。
在程序中的關鍵點插入額外的printf() 語句,以監視制定變量值的變化。
使用調試器
Linux環境中,C和C++一般使用GDB調試器。
4. 關鍵字和保留標識符
關鍵字由于特殊的含義,故不能用作標識符。
如果使用關鍵字不當(如,關鍵字用作變量名),編譯器會將其視為語法錯誤。
保留標識符包括以下劃線字符開頭的標識符和標準庫函數名,如printf() 。
5. 復習題
1.C語言的基本模塊是什么?
基本模塊和用戶自定義模塊的都稱為函數。
2.什么是語法錯誤和語義錯誤?
語法錯誤:違反組成語句或程序的語法規則。例:printf "hello world";
語義錯誤:含義錯誤。例:n3 = n2*n
Indiana Sloth編寫了下面的程序,并征求你的意見,請幫助他評定。
#include stdio.h int main(void) ( int s s:=56; printf(There are s weeks in a year.); return 0;
程序錯誤是無法正常運行的。正確的修改如下:
#include
假設下面的4個例子都是完整程序中的一部分,他們都輸出什么結果?
a. printf("Baa Baa Black Sheep."); /*輸出結果為:Baa Baa Black Sheep.Have you any wool?*/ printf("Have you any wool?\n"); b. printf("Begone!\nO creature of lard!\n"); /*輸出結果為:Begone!此處換行 O creature of lard!*/ c. printf("What?\nNo/nfish?\n"); /*輸出結果為:What? 此處換行 No/nfish?*/ d. int num; num = 2; printf("%d + %d = %d",num,num,num+num); /*輸出結果為:2 + 2 = 4*/
在main、int、function、char、=中,哪些是C語言的關鍵字?
關鍵字為:main、int char。
如何以下面的格式輸出變量words和lines的值(例,3020和350代表兩個變量的值)?
There were 3020 words and 350 lines
#include
考慮下面的程序
#include
請問,在執行完第7、第8、第9行后,程序的狀態分別是什么?
執行完第7行,a = 5,b = 2;
執行完第8行,a = 5,b = 5
執行完第9行,a = 5,b = 5
考慮下面的程序
#include
請問,在執行完第7、第8、第9行后,程序的狀態分別是什么?
執行第7行后,x = 10,y = 5
執行第8行后,x = 10,y = 15
執行第9行后,x = 150,y = 15
6. 編程練習題
編寫一個程序,調用一次printf()函數,把你的姓名打印在一行,再調用一次printf()函數,把你的姓名打印在兩行。然后,再調用兩次printf()函數,把你的姓名打印在一行。打印形式如下:
Soler HO 第一次的內容
Soler 第二次打印
HO 第三次打印
Soler HO 第三次 和第四次 打印
#include
編寫一個程序,打印你的姓名和地址
#include
編寫一個程序,把你的年齡轉換成天數,并顯示這兩個值,不用考慮閏年的問題
/*編寫一個程序,把你的年齡轉換成天數,并顯示這兩個值,不用考慮閏年的問題*/ #include
編寫一個程序,生成以下輸出:
For he's a jolly good fellow! For he's a jolly good fellow! For he's a jolly good fellow! Which nobody can deny!
除了main()函數以外,該程序還要調用兩個自定義函數:一個名為jolly(),用于打印前3條消息,調用一次打印一條:另一個函數名為deny(),打印最后一條消息。
#include
編寫一個程序,生成以下輸出:
Brazil, Russia, India, China India, China, Brazil, Russia
除了main()以外,該程序還要調用兩個自定義函數:一個名為br(),調用一次打印一次"Brazil,Russia";另一個名為ic(),調用一次打印一次"India,China"。其他內容在main()函數中完成。
/*編程練習題05*/ #include
編寫一個程序,創建一個整型變量toes,并將toes設置為10.程序中還要計算toes的兩倍和toes的平方。該程序應打印3個值,并分別描述以示區分。
#include
編寫一個程序,生成以下格式的輸出:
Smile!Smile!Smile! Smile!Smile! Smile!
該程序要定義一個函數,該函數要被調用一次打印一次“Smile!”,根據程序的需要使用該函數。
#include
在C語言中,函數可以調用另一個函數。編寫一個程序,調用一個名為one_three()的函數。
該函數在一行打印單詞"one",再調用第2個函數two(),然后在另一行打印單詞“three”。
two()函數在一行顯示單詞“two”。main()函數在調用one_three()函數前要打印短語“starting now:”,
并在調用完畢后顯示短語“done!”。因此,該程序的輸出應如下所示:
starting now: one two three done!
#include
C 語言 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。