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