C語言是目前廣泛流行的程序設(shè)計(jì)語言之一,是許多計(jì)算機(jī)專業(yè)人員和計(jì)算機(jī)愛好者編制軟件強(qiáng)有力的開發(fā)工具,也是國(guó)內(nèi)外大學(xué)普遍開設(shè)的計(jì)算機(jī)基礎(chǔ)課程之一。
本書共13章,內(nèi)容包括C語言的發(fā)展、特點(diǎn)與程序開發(fā)基本知識(shí),基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,基本語句與順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針,字符串,結(jié)構(gòu)體、共用體、鏈表和枚舉,編譯預(yù)處理,位運(yùn)算和文件。
本書作者長(zhǎng)期從事高校的計(jì)算機(jī)程序設(shè)計(jì)語言的教學(xué)工作,有豐富的教學(xué)、科研經(jīng)驗(yàn)。書中文字流暢、概念清楚、深入淺出,并穿插有大量的實(shí)例,可使讀者迅速掌握C語言程序設(shè)計(jì)的基本技能。
本書可作為普通高等學(xué)校本、?茖W(xué)生的教學(xué)用書,也可供計(jì)算機(jī)水平考試培訓(xùn)及工程技術(shù)人員自學(xué)使用。
C語言是一種使用方便、功能強(qiáng)大、移植性好、兼具高級(jí)語言和低級(jí)語言優(yōu)點(diǎn)、能產(chǎn)生高效率目標(biāo)代碼的優(yōu)秀的結(jié)構(gòu)化程序設(shè)計(jì)語言。C語言作為一種既適合于開發(fā)系統(tǒng)軟件又適合于開發(fā)應(yīng)用軟件的語言,已經(jīng)成為計(jì)算機(jī)程序設(shè)計(jì)語言的主流語種之一,得到廣泛的認(rèn)同。
20多年來,除了計(jì)算機(jī)專業(yè)人員外,其他行業(yè)的廣大計(jì)算機(jī)應(yīng)用人員也喜歡使用C語言。全國(guó)計(jì)算機(jī)等級(jí)考試、全國(guó)計(jì)算機(jī)應(yīng)用技術(shù)證書考試、全國(guó)計(jì)算機(jī)軟件專業(yè)技術(shù)資格及水平考試等都將C語言納入了考試范圍。隨著C語言在國(guó)內(nèi)普及、推廣、應(yīng)用的需要,全國(guó)許多高校已不僅對(duì)計(jì)算機(jī)專業(yè)的學(xué)生,而且對(duì)廣大非計(jì)算機(jī)專業(yè)的學(xué)生也相繼開設(shè)了C語言程序設(shè)計(jì)課程。此外,成人教育、函授教育等同樣廣泛開設(shè)了C語言程序設(shè)計(jì)課程。
C語言與其他高級(jí)語言相比更復(fù)雜一些。這是因?yàn)樗?guī)則較多,涵蓋的知識(shí)面更廣,尤其是它涉及一些機(jī)器及環(huán)境方面的實(shí)現(xiàn)細(xì)節(jié),使用靈活,難點(diǎn)較多,容易出錯(cuò),初學(xué)者不易掌握。
本書的對(duì)象主要為大學(xué)非計(jì)算機(jī)專業(yè)的本科生和?粕F涮攸c(diǎn)如下:
(1)本著不苛求讀者具備太多計(jì)算機(jī)專門知識(shí)也能學(xué)好C語言的愿望,盡量做到敘述通俗易懂,一方面要有利于組織教學(xué),另一方面又要有利于自學(xué)。
(2)學(xué)習(xí)的目的在于應(yīng)用。通過學(xué)習(xí),讀者應(yīng)該能做到自己動(dòng)手編程來解決問題。本教材強(qiáng)調(diào)了算法在編程中的重要性,同時(shí)也希望通過學(xué)習(xí),讀者能養(yǎng)成良好的編程習(xí)慣和風(fēng)格。
第1章 C語言的發(fā)展、特點(diǎn)與程序開發(fā)基本知識(shí)
1.1 C語言的發(fā)展
1.1.1 C語言的起源與發(fā)展
1.1.2 C語言標(biāo)準(zhǔn)
1.2 C語言的特點(diǎn)
1.2.1 C語言的主要特點(diǎn)
1.2.2 C語言與C++,Java和C#
1.3 計(jì)算機(jī)語言與程序設(shè)計(jì)基本方法
1.3.1 計(jì)算機(jī)程序
1.3.2 計(jì)算機(jī)語言及其處理程序
1.3.3 程序設(shè)計(jì)的基本方法
1.4 C語言程序的基本結(jié)構(gòu)與開發(fā)過程
1.4.1 簡(jiǎn)單的C語言程序介紹
1.4.2 C語言程序基本結(jié)構(gòu)
1.4.3 C語言的字符集、關(guān)鍵字和標(biāo)識(shí)符
1.4.4 C語言程序的開發(fā)過程
1.4.5 C語言程序的編程環(huán)境
1.5 算法及其表示
1.5.1 算法的概念
1.5.2 算法的表示
本章小結(jié)
思考題
第2章 基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式
2.1 數(shù)據(jù)與數(shù)據(jù)類型
2.1.1 程序中數(shù)據(jù)的表示形式
2.1.2 c語言的數(shù)據(jù)類型
2.1.3 c語言基本數(shù)據(jù)類型
2.1.4 不同數(shù)據(jù)類型間的轉(zhuǎn)換與運(yùn)算
2.2 常量、變量和標(biāo)準(zhǔn)函數(shù)
2.2.1 常量
2.2.2 變量
2.2.3 庫(kù)函數(shù)
2.3 運(yùn)算符和表達(dá)式
2.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.3.2 關(guān)系運(yùn)算符與關(guān)系表達(dá)式
2.3.3 邏輯運(yùn)算符與邏輯表達(dá)式
2.3.4 條件運(yùn)算符與條件表達(dá)式
2.3.5 賦值運(yùn)算符與賦值表達(dá)式
2.3.6 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式
本章小結(jié)
思考題
第3章 基本語句與順序結(jié)構(gòu)
3.1 C語言程序的基本語句
3.1.1 聲明語句
3.1.2 表達(dá)式語句
3.1.3 函數(shù)調(diào)用語句
3.1.4 控制語句
3.1.5 復(fù)合語句
3.1.6 空語句
3.2 賦值語句
3.3 數(shù)據(jù)的輸入輸出
3.3.1 printf()函數(shù)
3.3.2 scanf()函數(shù)
3.3.3 putchar()函數(shù)
3.3.4 getchar()函數(shù)
本章小結(jié)
思考題
第4章 選擇結(jié)構(gòu)
4.1 用if條件語句實(shí)現(xiàn)選擇結(jié)構(gòu)
4.1.1 單分支if條件語句
4.1.2 雙分支if條件語句
4.1.3 多分支if條件語句
4.1.4 if條件語句的嵌套
4.2 Switch語句
本章小結(jié)
思考題
第5章 循環(huán)結(jié)構(gòu)
5.1 while語句
5.2 do.while語句
5.3 for語句
5.4 嵌套循環(huán)結(jié)構(gòu)
5.5 b,reak語句、continue語句和goto語句
5.5.1 break語句
5.5.2 continue語句
5.5.3 goto語句
5.6 程序舉例
5.6.1 循環(huán)程序舉例
5.6.2 循環(huán)在數(shù)值計(jì)算中的應(yīng)用
本章小結(jié)
思考題
第6章 數(shù)組
6.1 一維數(shù)組
6.1.1 一維數(shù)組的定義和存儲(chǔ)
6.1.2 一維數(shù)組元素的引用
6.1.3 一維數(shù)組的初始化
6.1.4 一維數(shù)組元素的輸入輸出
6.1.5 一維數(shù)組應(yīng)用舉例
6.2 二維數(shù)組
6.2.1 二維數(shù)組的定義和存儲(chǔ)
6.2.2 二維數(shù)組元素的引用
6.2.3 二維數(shù)組的初始化
6.2.4 二維數(shù)組的輸入輸出
6.2.5 二維數(shù)組應(yīng)用舉例
本章小結(jié)
思考題
第7章 函數(shù)
7.1 函數(shù)概述
7.2 函數(shù)的分類與定義
7.2.1 函數(shù)的分類
7.2.2 函數(shù)的定義
7.3 函數(shù)調(diào)用
7.3.1 函數(shù)調(diào)用的一般形式
7.3.2 函數(shù)的參數(shù)
7.3.3 函數(shù)的返回值
7.3.4 對(duì)被調(diào)用函數(shù)的說明
7.3.5 數(shù)組作為函數(shù)參數(shù)
7.4 函數(shù)的嵌套調(diào)用和遞歸調(diào)用
7.4.1 函數(shù)的嵌套調(diào)用
7.4.2 函數(shù)的遞歸調(diào)用
7.5 變量的作用域和生存期
7.5.1 變量的作用域
7.5.2 變量的存儲(chǔ)類別
7.6 內(nèi)部函數(shù)和外部函數(shù)
7.6.1 內(nèi)部函數(shù)
7.6.2 外部函數(shù)
7.7 綜合應(yīng)用舉例(一)
本章小結(jié)
思考題
第8章 指針
8.1 指針和指針變量的概念
8.1.1 地址和指針
8.1.2 指針變量
8.2 指向變量的指針變量
8.2.1 指針變量的定義
8.2.2 指針變量的引用
8.2.3 指針變量的初始化
8.2.4 指針變量作為函數(shù)參數(shù)
8.3 指針與數(shù)組
8.3.1 指針變量的運(yùn)算
8.3.2 數(shù)組的指針和指向數(shù)組的指針變量
8.3.3 數(shù)組名作為函數(shù)參數(shù)
8.4 指針數(shù)組和指向指針的指針
8.4.1 指針數(shù)組
8.4.2 指向指針的指針
8.5 指針與函數(shù)
8.5.1 函數(shù)的指針與指向函數(shù)的指針變量
8.5.2 函數(shù)指針作為函數(shù)參數(shù)
8.5.3 返回指針的函數(shù)
本章小結(jié)
思考題
第9章 字符串
9.1 字符串的基本概念
9.2 用字符數(shù)組存儲(chǔ)和處理字符串
9.2.1 字符數(shù)組的定義
9.2.2 字符數(shù)組的引用
11.1 編譯預(yù)處理的概念
11.2 宏定義
11.2.1 不帶參數(shù)的宏定義
11.2.2 帶參數(shù)的宏定義
11.3 文件包含
11.4 條件編譯
本章小結(jié)
思考題
第12章 位運(yùn)算
12.1 位運(yùn)算的概念
12.2 位運(yùn)算符的含義及其使用
12.2.1 按位“與”運(yùn)算(&)
12.2.2 按位“或”運(yùn)算(I)
12.2.3 按位“非”運(yùn)算(~)
12.2 一按位“異或”運(yùn)算(n)
12.2.5 “左移”運(yùn)算(>)
12.2.7 長(zhǎng)度不同的兩個(gè)數(shù)進(jìn)行位運(yùn)算的運(yùn)算規(guī)則
12.2 ,8位復(fù)合賦值運(yùn)算符
12.3 位段
12.3.1 位段的定義
12.3.2 位段的使用
本章小結(jié)
思考題
第13章 文件
13.1 文件與文件類型指針
13.1.1 文件
13.1.2 文件數(shù)據(jù)的存儲(chǔ)形式
13.1.3 文件的處理方法
13.2 文件的打開與關(guān)閉
13.2.1 文件的打開
13.2.2 文件的關(guān)閉
13.3 文件的存取
13.3.1 概述
13.3.2 字符讀寫(函數(shù)fgetc()和函數(shù)fputc())
13.3.3 字符串讀寫(函數(shù)fgets()和函數(shù)fputc())
13.3.4 格式讀寫(函數(shù)fscanf()和函數(shù)fputc())
13.3.5 數(shù)據(jù)塊讀寫(函數(shù)fread()和函數(shù)fwrite())
13.4 文件的定位
13.4.1 概述
13.4.2 函數(shù)rewind()
13.4.3 函數(shù)fseek()
13.4.4 fteU函數(shù)
13.5 綜合應(yīng)用舉例(三)
本章小結(jié)
思考題
附錄一 ASCII碼表
附錄二 C語言保留字
附錄三 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
附錄四 常用庫(kù)函數(shù)
一、數(shù)學(xué)函數(shù)
二、字符函數(shù)
三、字符串函數(shù)
四、輸入輸出函數(shù)
參考文獻(xiàn)
2.面向?qū)ο蟮某绦蛟O(shè)計(jì)
相對(duì)結(jié)構(gòu)化程序設(shè)計(jì)而言,面向?qū)ο蟮某绦蛟O(shè)計(jì)是一個(gè)全新的概念。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,引入了類、對(duì)象、屬性、事件和方法等一系列概念以及前所未有的編程思想。這里僅對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì)中的幾個(gè)基本概念作簡(jiǎn)要說明,不作詳細(xì)討論。
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,最重要的思想是將數(shù)據(jù)(或稱數(shù)據(jù)成員)與處理這些數(shù)據(jù)的例程(或稱成員函數(shù))全部封裝到一個(gè)類中。只有屬于該對(duì)象的成員函數(shù)才能訪問自己的數(shù)據(jù)成員,從而達(dá)到了保護(hù)數(shù)據(jù)的目的。
每一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言都提供了三類機(jī)制,即封裝、繼承和多態(tài)。
“封裝”就是把數(shù)據(jù)和操作這些數(shù)據(jù)的代碼封裝在對(duì)象類里,對(duì)外界是完全不透明的,對(duì)象類完全擁有自己的屬性。程序設(shè)計(jì)者不需要了解對(duì)象類中的技術(shù)代碼,也無法對(duì)它們加以控制和干預(yù),而只需要重復(fù)調(diào)用其對(duì)象。
“繼承”是允許在已有對(duì)象類的基礎(chǔ)上構(gòu)造新的對(duì)象類,即由一個(gè)類獲取另一個(gè)對(duì)象類的過程。
“多態(tài)”是指發(fā)出同樣的消息被不同的對(duì)象類接收時(shí)會(huì)產(chǎn)生不同的行為。這里所說的消息是指對(duì)類的成員函數(shù)的調(diào)用,而不同的行為是指不同的實(shí)現(xiàn)。利用多態(tài)性用戶只需發(fā)送一般形式的消息,而將所有的實(shí)現(xiàn)留給接收信息的對(duì)象,然后對(duì)象根據(jù)所接收的消息做出相應(yīng)的動(dòng)作或操作。
面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)是:程序一般由類的定義和類的使用兩部分組成。在主程序中定義各對(duì)象并規(guī)定它們之間傳遞消息的規(guī)律。程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對(duì)象接收到消息后啟動(dòng)有關(guān)方法完成相應(yīng)的操作。