C 語言是在C語言基礎(chǔ)上擴(kuò)充了面向?qū)ο髾C(jī)制而形成的一種面向?qū)ο蟪绦蛟O(shè)計語言。一方面,C 語言全面兼容C語言,強(qiáng)調(diào)結(jié)構(gòu)化的編程思想; 另一方面,C 語言支持面向?qū)ο蟮姆椒,?shí)現(xiàn)了類的封裝、數(shù)據(jù)隱藏、繼承及多態(tài)性等,其代碼具有易維護(hù)且可重用等特征。
沒有編程基礎(chǔ)的學(xué)生學(xué)習(xí)C 語言時,大都感到難學(xué)、難入門,甚至半途而廢。編者根據(jù)多年C 語言的教學(xué)經(jīng)驗(yàn),借鑒部分中外經(jīng)典的C 語言教材,編寫了這本易于學(xué)生理解、便于學(xué)生建立編程思維的教材。本書的主要特色如下:
(1) 知識結(jié)構(gòu)完整。本書包括與C 語言編程相關(guān)的信息技術(shù)部分知識,可以自成一體; 不僅包括C 語言面向過程部分的基本語法和基本算法,強(qiáng)調(diào)結(jié)構(gòu)化的編程思想,還包括面向?qū)ο蟛糠值木幊,建立了一套面向(qū)ο蟮木幊趟枷搿?/p>
(2) 問題分析清楚。本書對于一些重要且難以理解的知識點(diǎn)結(jié)合圖示進(jìn)行了分析,可使學(xué)生有一個形象直觀的認(rèn)識,從本質(zhì)上理解問題; 給出了一套有效的C 語言程序分析方法,方便學(xué)生更清晰地分析問題和解決問題。
(3) 內(nèi)容循序漸進(jìn)。本書對各語法點(diǎn)僅做基本介紹,不深究其細(xì)節(jié),能解決一些小的問題。首先把學(xué)生引進(jìn)門,培養(yǎng)學(xué)生的編程興趣; 然后在課后習(xí)題中逐步提升求解問題的難度,培養(yǎng)學(xué)生解決復(fù)雜問題的能力。
(4) 范例易于理解。本書對C 語言中的基本語法配合實(shí)例進(jìn)行闡述,作者精挑細(xì)選了一些范例程序,力求講解清晰,深入淺出,突破難點(diǎn),激發(fā)學(xué)生的編程興趣。
全書共分為15章。
第1章: C 語言概述,介紹C 語言的發(fā)展歷史、結(jié)構(gòu)化編程和面向?qū)ο蟪绦蛟O(shè)計的概念,以及C 語言程序的開發(fā)過程。
第2章: 信息表示和算法簡介,介紹數(shù)值和字符信息在計算機(jī)中表示的方法、算法的定義和特性,以及3種編程結(jié)構(gòu)的流程圖表示方法。
第3章: 基本數(shù)據(jù)類型和表達(dá)式,介紹C 語言的基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、數(shù)據(jù)類型轉(zhuǎn)換,以及常用庫函數(shù)。
第4章: 簡單程序設(shè)計,介紹數(shù)據(jù)的輸入/輸出,以及簡單的順序結(jié)構(gòu)程序設(shè)計等。
第5章: 流程控制結(jié)構(gòu),介紹選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和其他流程控制語句,以及典型程序示例。
第6章: 函數(shù),介紹函數(shù)的定義與調(diào)用、內(nèi)聯(lián)函數(shù)、函數(shù)重載及函數(shù)的作用域和存儲類型等。
第7章: 編譯預(yù)處理,介紹編譯預(yù)處理的知識及3種預(yù)處理指令宏、文件包含和條件編譯。
第8章: 數(shù)組,介紹一維數(shù)組和二維數(shù)組的定義與引用、數(shù)組名作為函數(shù)參數(shù)的應(yīng)用,以及字符數(shù)組與字符串的應(yīng)用。
第9章: 指針,介紹指針與指針變量的概念、指針運(yùn)算、指針數(shù)組、函數(shù)指針、指向函數(shù)的指針等。
第10章: 結(jié)構(gòu)體、共用體和枚舉類型,介紹C 語言的構(gòu)造數(shù)據(jù)類型,包括結(jié)構(gòu)體、共用體和枚舉,對單向鏈表的各種操作也做了詳細(xì)的說明。
第11章: 類和對象,介紹類和對象的定義方法、對象的初始化、this 指針、構(gòu)造函數(shù)、析構(gòu)函數(shù)、復(fù)制構(gòu)造函數(shù)、友元函數(shù)和友元類、靜態(tài)成員,以及常成員和常對象等。
第12章: 運(yùn)算符重載,介紹單目與雙目運(yùn)算符的重載,包括重載為成員函數(shù)或友元函數(shù)在定義格式及應(yīng)用中的區(qū)別。
第13章: 繼承和派生,介紹基類和派生類、單繼承、多繼承和虛基類、繼承中沖突的解決和支配規(guī)則、虛函數(shù)與運(yùn)行時的多態(tài)性的概念等。
第14章: 輸入/輸出流,介紹I/О標(biāo)準(zhǔn)流類、鍵盤輸入和屏幕輸出、磁盤文件的輸入/輸出等。
第15章: 模板和異常處理,介紹模板的概念和異常處理方法。
本書所列舉的例題、習(xí)題均已在Visual Studio 2010下調(diào)試通過,書中標(biāo)有*的章節(jié)為選講內(nèi)容。
在編寫本書的過程中,編者參閱了大量C 語言的參考書和有關(guān)資料,在此向這些參考文獻(xiàn)的作者表示誠摯的謝意!
本書由丁衛(wèi)平、程學(xué)云、陳文蘭任主編,任紅建、沈曉紅、文萬志任副主編,徐敏、顧頎、盧春紅、劉云、徐劍、張潔、袁佳祺、趙理莉、何海棠等參編。
本書的編寫得到了國家一流專業(yè)建設(shè)點(diǎn)(南通大學(xué)計算機(jī)科學(xué)與技術(shù)專業(yè))給予的資助,在出版過程中得到了清華大學(xué)出版社的支持和幫助,在此表示衷心的感謝,同時感謝研究生李銘和朱明強(qiáng)等同學(xué)在本書排版和校對時給予的幫助!
由于編者水平有限,書中難免有疏漏與不妥之處,懇請同行和讀者批評指正。
編者
2023年6月
第1章C 語言概述
1.1從C語言到C 語言
1.2C 語言特性
1.3C 語言程序?qū)嵗?/p>
1.4C 語言程序的編寫與實(shí)現(xiàn)
1.5Visual Studio 2010的上機(jī)調(diào)試過程
習(xí)題
第2章信息表示和算法簡介
2.1信息在計算機(jī)中的表示
2.1.1進(jìn)位計數(shù)制
2.1.2信息在計算機(jī)中的表示方法
2.2算法簡介
2.2.1算法概述
2.2.2算法示例
2.2.3算法的特性
2.2.4算法的描述
2.2.53種基本結(jié)構(gòu)
習(xí)題
第3章基本數(shù)據(jù)類型和表達(dá)式
3.1數(shù)據(jù)類型
3.2常量
3.2.1字面常量
3.2.2符號常量
3.3變量
3.3.1標(biāo)識符和關(guān)鍵字
3.3.2變量的定義
3.3.3變量賦初值
3.3.4變量的使用
3.4運(yùn)算符與表達(dá)式
3.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式
3.4.2關(guān)系運(yùn)算符與關(guān)系表達(dá)式
3.4.3邏輯運(yùn)算符與邏輯表達(dá)式
3.4.4賦值運(yùn)算符與復(fù)合賦值運(yùn)算符
3.4.5自增運(yùn)算符與自減運(yùn)算符
3.4.6逗號運(yùn)算符與逗號表達(dá)式
3.4.7sizeof運(yùn)算符
3.4.8條件運(yùn)算符
3.5數(shù)據(jù)類型轉(zhuǎn)換
3.5.1自動類型轉(zhuǎn)換
3.5.2強(qiáng)制類型轉(zhuǎn)換
3.6常用庫函數(shù)
習(xí)題
目錄
C 程序設(shè)計基礎(chǔ)教程
第4章簡單程序設(shè)計
4.1簡單語句
4.2復(fù)合語句
4.3數(shù)據(jù)的輸入/輸出
4.3.1標(biāo)準(zhǔn)輸入流對象cin
4.3.2標(biāo)準(zhǔn)輸出流對象cout
4.4順序結(jié)構(gòu)編程舉例
習(xí)題
第5章流程控制結(jié)構(gòu)
5.1選擇結(jié)構(gòu)語句
5.1.1if語句
5.1.2switch語句
5.2循環(huán)結(jié)構(gòu)語句
5.2.1while循環(huán)語句
5.2.2dowhile循環(huán)語句
5.2.3for循環(huán)語句
5.2.4循環(huán)嵌套
5.3其他流程控制語句
5.3.1break語句
5.3.2continue語句
5.3.3*goto語句
5.4程序舉例
習(xí)題
第6章函數(shù)
6.1函數(shù)的定義
6.2函數(shù)的調(diào)用
6.2.1函數(shù)的嵌套調(diào)用
6.2.2函數(shù)的遞歸調(diào)用
6.3引用作為函數(shù)參數(shù)
6.3.1引用的定義
6.3.2引用作為函數(shù)形參
6.4內(nèi)聯(lián)函數(shù)
6.5帶默認(rèn)形參值的函數(shù)
6.6函數(shù)重載
6.7作用域和存儲類型
6.7.1作用域
6.7.2存儲類型
習(xí)題
第7章編譯預(yù)處理
7.1宏定義
7.1.1不帶參數(shù)的宏定義
7.1.2帶參數(shù)的宏定義
7.2文件包含
7.3*條件編譯
7.4程序的多文件組織
習(xí)題
第8章數(shù)組
8.1一維數(shù)組的定義、初始化和引用
8.1.1一維數(shù)組的定義
8.1.2一維數(shù)組的初始化
8.1.3一維數(shù)組的引用
8.1.4一維數(shù)組程序舉例
8.2多維數(shù)組的定義、初始化和引用
8.2.1二維數(shù)組的定義
8.2.2二維數(shù)組的初始化
8.2.3二維數(shù)組的引用
8.2.4二維數(shù)組程序舉例
8.3數(shù)組作為函數(shù)的參數(shù)
8.3.1數(shù)組元素作為函數(shù)的參數(shù)
8.3.2一維數(shù)組作為函數(shù)的參數(shù)
8.3.3二維數(shù)組作為函數(shù)的參數(shù)
8.4字符數(shù)組
8.4.1字符數(shù)組的定義
8.4.2字符數(shù)組的初始化
8.4.3字符數(shù)組與字符串
8.4.4字符數(shù)組的輸入/輸出
8.5字符串處理函數(shù)
習(xí)題
第9章指針
9.1指針概述
9.1.1地址的概念
9.1.2指針的概念
9.1.3指針變量
9.1.4指針的運(yùn)算
9.2指針與數(shù)組
9.2.1指針與一維數(shù)組
9.2.2指針與二維數(shù)組
9.2.3指針與字符串
9.3指針數(shù)組和指向指針的指針變量
9.3.1指針數(shù)組
9.3.2指向一維數(shù)組的指針變量
9.3.3指向指針的指針變量
9.4指針與函數(shù)
9.4.1指針作函數(shù)的參數(shù)
9.4.2返回值為指針的函數(shù)
9.4.3指向函數(shù)的指針
9.5new和delete運(yùn)算符
9.5.1new運(yùn)算符
9.5.2delete運(yùn)算符
9.6引用和指針
9.6.1指針變量引用的定義
9.6.2指針變量引用和函數(shù)
9.7常值變量
習(xí)題
第10章結(jié)構(gòu)體、共用體和枚舉類型
10.1結(jié)構(gòu)體
10.1.1結(jié)構(gòu)體類型的定義
10.1.2結(jié)構(gòu)體類型變量的定義
10.1.3結(jié)構(gòu)體類型變量的使用
10.2單向鏈表
10.2.1單向鏈表的概念
10.2.2單向鏈表的建立和基本操作
10.3*共用體
10.3.1共用體類型的定義
10.3.2共用體類型變量的定義和使用
10.3.3無名共用體類型的使用
10.4枚舉
10.4.1枚舉類型的定義
10.4.2枚舉類型變量的定義
10.4.3枚舉類型變量的使用
10.5定義類型別名
習(xí)題
第11章類和對象
11.1面向?qū)ο蟪绦蛟O(shè)計概述
11.1.1面向?qū)ο蟮乃枷?/p>
11.1.2面向?qū)ο笾械幕靖拍?/p>
11.2類的聲明和對象的定義
11.2.1類的聲明
11.2.2類的訪問權(quán)限
11.2.3類的成員函數(shù)
11.2.4對象的定義
11.2.5this指針
11.3構(gòu)造函數(shù)和析構(gòu)函數(shù)
11.3.1構(gòu)造函數(shù)
11.3.2析構(gòu)函數(shù)
11.3.3復(fù)制構(gòu)造函數(shù)
11.4友元
11.4.1友元函數(shù)
11.4.2友元類
11.5靜態(tài)成員
11.5.1靜態(tài)數(shù)據(jù)成員
11.5.2靜態(tài)成員函數(shù)
11.6常成員和常對象
11.6.1常成員
11.6.2常對象
習(xí)題
第12章運(yùn)算符重載
12.1運(yùn)算符重載概述
12.1.1重載運(yùn)算符的目的
12.1.2重載運(yùn)算符的方法
12.2運(yùn)算符重載為類的成員函數(shù)
12.2.1二元運(yùn)算符重載為類的成員函數(shù)
12.2.2一元運(yùn)算符重載為類的成員函數(shù)
12.3運(yùn)算符重載為類的友元函數(shù)
12.3.1二元運(yùn)算符重載為類的友元函數(shù)
12.3.2一元運(yùn)算符重載為類的友元函數(shù)
12.4特殊運(yùn)算符的重載
12.4.1賦值運(yùn)算符的重載
12.4.2自增和自減運(yùn)算符的重載
12.4.3下標(biāo)運(yùn)算符的重載
12.4.4函數(shù)調(diào)用運(yùn)算符的重載
12.4.5類型轉(zhuǎn)換運(yùn)算符函數(shù)
12.4.6輸入/輸出運(yùn)算符的重載
12.5運(yùn)算符重載規(guī)則
12.6字符串類
習(xí)題
第13章繼承和派生
13.1繼承與派生的概念
13.1.1基本概念
13.1.2單一繼承
13.1.3多重繼承
13.2派生類的構(gòu)造與析構(gòu)
13.2.1單繼承派生類的構(gòu)造與析構(gòu)
13.2.2多繼承派生類的構(gòu)造與析構(gòu)
13.2.3含對象成員派生類的構(gòu)造與析構(gòu)
13.3繼承中的同名沖突與支配
13.3.1同名沖突及支配規(guī)則
13.3.2賦值兼容規(guī)則
13.4虛基類
13.4.1虛基類的定義
13.4.2虛基類的構(gòu)造函數(shù)
13.5虛函數(shù)
13.5.1多態(tài)性的概念
13.5.2虛函數(shù)的定義
13.5.3虛函數(shù)與動態(tài)聯(lián)編
13.5.4純虛函數(shù)與抽象類
習(xí)題
第14章輸入/輸出流
14.1C 語言輸入/輸出流
14.1.1ios類的結(jié)構(gòu)
14.1.2輸入流
14.1.3輸出流
14.1.4格式化的輸入/輸出
14.2文件流
14.2.1文件的打開與關(guān)閉
14.2.2對文本文件的操作
14.2.3對二進(jìn)制文件的操作
14.3字符串流
習(xí)題
第15章*模板和異常處理
15.1模板
15.1.1函數(shù)模板
15.1.2類模板
15.2異常處理
15.2.1異常處理的概念
15.2.2異常處理機(jī)制
15.2.3指定函數(shù)拋出的異常類型
15.2.4異常處理的嵌套
15.2.5重新拋出異常
15.2.6構(gòu)造函數(shù)中的異常處理
習(xí)題
附錄A基本ASCII碼表
附錄BC 語言運(yùn)算符優(yōu)先級及結(jié)合性
附錄CC 語言常用的庫函數(shù)
參考文獻(xiàn)