本書主要面向程序設計的初學者,旨在引導讀者了解C語言的基本語法規(guī)則并具備一定的設計、編寫C語言程序的能力。本書內容分為十章,包括:概述,基本數據類型、基本輸入輸出、程序控制結構、數組和指針、函數、字符串、結構體與共用體、文件操作和項目實戰(zhàn)。 本書注重教材的實用性,由淺入深,將大量的與實際項目相關的習題分散到各個知識點的課后練習題中,并在*后采用一個項目案例對所學的知識進行總結與檢驗。本書適合作為大學各專業(yè)的教材。
本書是一本面向編程入門者的C語言教程,力圖通過這本書讓讀者能夠掌握C語言的基本概念和語法,并具有一定的通過編寫程序解決問題的能力。本書共11章,內容包括:程序設計概述,數據類型,運算符、表達式和語句,選擇結構,循環(huán)結構,數組,指針和數組,函數,字符串,結構體和共用體,文件操作等。
本書注重教材的實用性,書中包含大量的示例代碼和編程練習題目,旨在幫助學生養(yǎng)成良好的代碼編寫習慣,并鍛煉學生的編程能力。
C語言是目前廣泛使用的編程語言,也是公認的編程入門語言,很多高校都將其作為計算機專業(yè)學生學習的第一門程序設計語言。本書正是為編程入門者編寫的一本C語言入門書。
要編寫一本C語言的入門教程,編者認為應該遵循3個原則: ①盡可能只介紹C語言常用的語法和概念,以使讀者把握重點,盡快掌握C語言編程的基本技能; ②盡可能從一開始就給讀者展示具有良好編程風格的代碼,以幫助讀者在開始階段就養(yǎng)成良好的編程習慣; ③盡可能多地給讀者接觸代碼的機會,無論是閱讀代碼還是編寫代碼,以培養(yǎng)其編程能力。
基于上述原則,本書編者經過反復斟酌,提煉了一些C語言中常用的知識點。為了讓讀者能盡早地編寫程序,并通過編寫程序來驗證一些知識點,本書重新組織了知識點的順序。另外,每個知識點都附有相應的示例代碼。這些示例代碼都由具有多年項目實踐經驗的教師編寫,具有良好的編程風格,且所有代碼均在Code::Blocks中正確運行。
本書共分11章,具體如下。
第1章主要介紹計算機的結構,程序設計語言的概念、分類及其運行原理,以及C語言的發(fā)展歷史、C語言標準的概念等。
第2、3章主要介紹C語言的基本概念。其中,第2章主要介紹C語言中整型、實型和字符型三種基本數據類型的表示方法,各類型變量的定義以及格式化輸入和輸出的實現; 第3章主要介紹算術、賦值、遞增遞減等常用運算符的使用,以及相應表達式的計算和使用規(guī)則。
第4、5章主要介紹選擇和循環(huán)兩種程序控制結構的實現方法,并通過多個實例對具體的代碼編寫方法進行了展示。
第6、7章主要介紹一維數組和二維數組的定義和使用方法,指針的概念與指針變量的定義,以及如何通過指針來操作數組,并詳細闡述指針和數組的異同點。
第8章主要介紹函數的定義,如何通過定義函數來將復雜的任務分成小任務,函數調用時的參數傳遞的原理、參數包含指針或數組類型的函數的定義及地址傳遞的原理、變量的作用域、存儲類別等。
第9章主要介紹字符串常量和變量的定義,以及針對字符串的操作的實現。通過一些常用字符串操作函數的模擬實現代碼,介紹常用的字符串操作方法。
第10、11章主要介紹結構體和共用體的定義及其訪問方法,以及常用的文件操作函數,并通過具體的實例演示其不同的使用方法。
本書由閆超擔任主編并統(tǒng)稿,姜海濤、黃寶貴、黃萬麗、劉金星、秦朋擔任副主編。其中,第1~6章及附錄由閆超編寫,第7章由劉金星編寫,第8章由秦朋編寫,第9章由姜海濤編寫,第10章由黃萬麗編寫,第11章由黃寶貴編寫。在本書的編寫過程中,王佳睿同學完成了本書大部分圖片的繪制工作,王璇、管崢朝、許同杰、閆志強、王興、胡海洋、周希軍等同學完成了本書的多次校對工作,并對本書的結構提出了非常寶貴的建議。在本書編寫的過程中我們犧牲了很多陪伴家人的時間,在此特別感謝教材編寫組各位成員的家人的包容和支持。
由于編者水平有限,書中不足之處在所難免,懇請廣大讀者提出寶貴的意見,我們將不勝感激。
編者
2019年3月
閆超,碩士研究生,講師。1999-2013年于曲阜師范大學攻讀計算機科學與技術專業(yè)并取得學士學位,2003-2006年于中國科學院計算技術研究所攻讀計算機應用技術專業(yè)并獲工學碩士學位,主要研究方向為軟件工程、數據處理。主持并完成山東省軟科學研究計劃一項,校級青年基金項目兩項,濟寧市科技發(fā)展計劃項目一項,參與并完成省軟科學計劃項目一項、國家自然基金項目一項,參編教材1部,獲得軟件著作權一項。
第1章程序與C語言
1.1馮·諾依曼計算機
1.2程序設計語言
1.2.1機器語言
1.2.2匯編語言
1.2.3高級編程語言
1.3C語言概述
1.3.1C語言的歷史從B到C
1.3.2C語言標準
1.4C語言程序
1.4.1第一個C語言程序
1.4.2預處理、編譯和鏈接
1.4.3在Code::Blocks中編寫C語言程序
1.5本章小結
練習題
第2章數據類型
2.1整型數據
2.1.1整型數據的表示
2.1.2C語言中的整數類型
2.1.3整型字面量
2.1.4整型變量的聲明
2.1.5整型數據的輸入/輸出
2.2實型數據
2.2.1實數在計算機中的表示
2.2.2浮點型字面量與變量
2.2.3浮點型數據的輸入/輸出
2.3字符型數據
2.3.1字符型數據在計算機中的表示
2.3.2字符型字面量與字符變量
2.3.3字符型數據的輸入/輸出
2.4命名常量
2.4.1符號常量
2.4.2const限定符
2.5本章小結
練習題
第3章運算符、表達式和語句
3.1運算符和表達式
3.1.1算術運算符和算術表達式
3.1.2運算符的優(yōu)先級和結合性
3.1.3賦值運算符與表達式
3.1.4遞增、遞減運算符
3.2數據類型轉換
3.2.1數據類型的隱式轉換
3.2.2強制類型轉換運算符
3.3表達式語句
3.4本章小結
練習題
第4章程序控制結構選擇結構
4.1關系表達式和邏輯表達式
4.1.1關系運算符與關系表達式
4.1.2邏輯運算符與邏輯表達式
4.1.3短路特性
4.2if語句
4.2.1簡單形式的if語句
4.2.2ifelse語句
4.2.3條件運算符和條件表達式
4.2.4嵌套if語句
4.3switch語句
4.3.1break語句
4.3.2多個case共享語句組
4.4本章小結
練習題
第5章程序控制結構循環(huán)結構
5.1while語句
5.1.1引例
5.1.2while語句的使用
5.2for語句
5.2.1使用for語句的注意事項
5.2.2逗號運算符
5.2.3應用實例
5.3dowhile語句
5.4break和continue語句
5.4.1break語句
5.4.2continue語句
5.5循環(huán)嵌套
5.6本章小結
練習題
第6章數組
6.1一維數組
6.1.1一維數組的定義
6.1.2一維數組初始化
6.1.3應用實例
6.2二維數組
6.2.1二維數組的定義與使用
6.2.2二維數組與一維數組
6.2.3二維數組初始化
6.2.4應用實例
6.3本章小結
練習題
第7章指針與數組
7.1地址和指針
7.1.1地址
7.1.2指針
7.2指針運算
7.2.1間接尋址運算
7.2.2指針賦值運算
7.2.3指針算術運算
7.3指針與一維數組
7.3.1一維數組的地址
7.3.2指向一維數組的指針
7.3.3數組名與指向數組的變量
7.4指針與二維數組
7.4.1二維數組的地址
7.4.2指向二維數組的指針變量
7.5指針數組
7.6本章小結
練習題
第8章函數
8.1函數的定義
8.1.1什么是函數
8.1.2函數的定義
8.1.3return語句
8.1.4帶參數的宏
8.2函數調用
8.2.1函數調用的一般形式
8.2.2函數調用時的參數傳遞
8.2.3函數聲明
8.3遞歸
8.4數組和指針作函數參數
8.4.1一維數組作函數參數
8.4.2二維數組作函數參數
8.4.3指針作函數參數
8.4.4使用const關鍵字保護數據
8.4.5指向函數的指針和返回指針的函數
8.5局部變量與全局變量
8.5.1局部變量
8.5.2全局變量
8.5.3作用域規(guī)則
8.6變量的存儲類別
8.6.1auto
8.6.2register
8.6.3static
8.6.4extern
8.7本章小結
練習題
第9章字符串
9.1字符串常量
9.2字符串變量
9.2.1字符串變量的定義與初始化
9.2.2字符串的輸出
9.2.3字符數組與字符指針
9.3字符串的輸入
9.3.1使用scanf()函數讀取字符串
9.3.2使用gets()函數讀取字符串
9.3.3使用fgets()函數讀取字符串
9.3.4逐個字符的方式讀取字符串
9.4常用字符串處理函數
9.4.1strlen()函數
9.4.2strcpy()函數和strncpy()函數
9.4.3strcat()函數
9.4.4strcmp()函數
9.4.5sprintf()函數
9.5字符串數組
9.6本章小結
練習題
第10章結構體和共用體
10.1結構體類型與結構體變量
10.1.1結構體類型的定義
10.1.2結構體變量的定義
10.1.3用typedef為結構體類型定義別名
10.1.4結構體變量的引用和初始化
10.2結構體數組
10.2.1結構體數組的定義
10.2.2結構體數組的初始化
10.3結構體類型指針
10.3.1指向結構體變量的指針
10.3.2指向結構體數組的指針
10.4結構體與函數
10.4.1結構體變量的成員作函數參數
10.4.2結構體變量作函數參數
10.4.3指向結構體的指針作函數參數
10.5共用體
10.5.1共用體類型和變量的定義
10.5.2共用體變量的初始化和引用
10.6本章小結
練習題
第11章文件操作
11.1文件概述
11.1.1文件的概念
11.1.2數據文件的存儲形式
11.1.3文件指針
11.2文件的打開與關閉
11.2.1打開文件
11.2.2關閉文件
11.3文本文件的讀/寫
11.3.1讀單字符函數fgetc()
11.3.2寫單字符函數fputc()
11.3.3讀字符串函數fgets()
11.3.4寫字符串函數fputs()
11.4二進制文件的讀/寫
11.4.1讀數據塊函數fread()
11.4.2寫數據塊函數fwrite()
11.5文件的格式化讀/寫
11.5.1格式化文件讀函數fscanf()
11.5.2格式化文件寫函數fprintf()函數
11.6文件的隨機讀/寫
11.7本章小結
練習題
參考文獻
附錄1ASCII碼表
附錄2C語言的運算符優(yōu)先級
附錄3CodeBlocks中常用的快捷鍵