C語言是目前廣泛流行的程序設(shè)計語言之一,是許多計算機專業(yè)人員和計算機愛好者編制軟件強有力的開發(fā)工具,也是國內(nèi)外大學普遍開設(shè)的計算機基礎(chǔ)課程之一。
本書共13章,內(nèi)容包括C語言的發(fā)展、特點與程序開發(fā)基本知識,基本數(shù)據(jù)類型、運算符和表達式,基本語句與順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針,字符串,結(jié)構(gòu)體、共用體、鏈表和枚舉,編譯預處理,位運算和文件。
本書作者長期從事高校的計算機程序設(shè)計語言的教學工作,有豐富的教學、科研經(jīng)驗。書中文字流暢、概念清楚、深入淺出,并穿插有大量的實例,可使讀者迅速掌握C語言程序設(shè)計的基本技能。
本書可作為普通高等學校本、?茖W生的教學用書,也可供計算機水平考試培訓及工程技術(shù)人員自學使用。
C語言是一種使用方便、功能強大、移植性好、兼具高級語言和低級語言優(yōu)點、能產(chǎn)生高效率目標代碼的優(yōu)秀的結(jié)構(gòu)化程序設(shè)計語言。C語言作為一種既適合于開發(fā)系統(tǒng)軟件又適合于開發(fā)應(yīng)用軟件的語言,已經(jīng)成為計算機程序設(shè)計語言的主流語種之一,得到廣泛的認同。
20多年來,除了計算機專業(yè)人員外,其他行業(yè)的廣大計算機應(yīng)用人員也喜歡使用C語言。全國計算機等級考試、全國計算機應(yīng)用技術(shù)證書考試、全國計算機軟件專業(yè)技術(shù)資格及水平考試等都將C語言納入了考試范圍。隨著C語言在國內(nèi)普及、推廣、應(yīng)用的需要,全國許多高校已不僅對計算機專業(yè)的學生,而且對廣大非計算機專業(yè)的學生也相繼開設(shè)了C語言程序設(shè)計課程。此外,成人教育、函授教育等同樣廣泛開設(shè)了C語言程序設(shè)計課程。
C語言與其他高級語言相比更復雜一些。這是因為它規(guī)則較多,涵蓋的知識面更廣,尤其是它涉及一些機器及環(huán)境方面的實現(xiàn)細節(jié),使用靈活,難點較多,容易出錯,初學者不易掌握。
本書的對象主要為大學非計算機專業(yè)的本科生和?粕。其特點如下:
(1)本著不苛求讀者具備太多計算機專門知識也能學好C語言的愿望,盡量做到敘述通俗易懂,一方面要有利于組織教學,另一方面又要有利于自學。
(2)學習的目的在于應(yīng)用。通過學習,讀者應(yīng)該能做到自己動手編程來解決問題。本教材強調(diào)了算法在編程中的重要性,同時也希望通過學習,讀者能養(yǎng)成良好的編程習慣和風格。
第1章 C語言的發(fā)展、特點與程序開發(fā)基本知識
1.1 C語言的發(fā)展
1.1.1 C語言的起源與發(fā)展
1.1.2 C語言標準
1.2 C語言的特點
1.2.1 C語言的主要特點
1.2.2 C語言與C++,Java和C#
1.3 計算機語言與程序設(shè)計基本方法
1.3.1 計算機程序
1.3.2 計算機語言及其處理程序
1.3.3 程序設(shè)計的基本方法
1.4 C語言程序的基本結(jié)構(gòu)與開發(fā)過程
1.4.1 簡單的C語言程序介紹
1.4.2 C語言程序基本結(jié)構(gòu)
1.4.3 C語言的字符集、關(guān)鍵字和標識符
1.4.4 C語言程序的開發(fā)過程
1.4.5 C語言程序的編程環(huán)境
1.5 算法及其表示
1.5.1 算法的概念
1.5.2 算法的表示
本章小結(jié)
思考題
第2章 基本數(shù)據(jù)類型、運算符和表達式
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)換與運算
2.2 常量、變量和標準函數(shù)
2.2.1 常量
2.2.2 變量
2.2.3 庫函數(shù)
2.3 運算符和表達式
2.3.1 算術(shù)運算符和算術(shù)表達式
2.3.2 關(guān)系運算符與關(guān)系表達式
2.3.3 邏輯運算符與邏輯表達式
2.3.4 條件運算符與條件表達式
2.3.5 賦值運算符與賦值表達式
2.3.6 逗號運算符與逗號表達式
本章小結(jié)
思考題
第3章 基本語句與順序結(jié)構(gòu)
3.1 C語言程序的基本語句
3.1.1 聲明語句
3.1.2 表達式語句
3.1.3 函數(shù)調(diào)用語句
3.1.4 控制語句
3.1.5 復合語句
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條件語句實現(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ù)值計算中的應(yīng)用
本章小結(jié)
思考題
第6章 數(shù)組
6.1 一維數(shù)組
6.1.1 一維數(shù)組的定義和存儲
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ù)組的定義和存儲
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 對被調(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 變量的存儲類別
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 指針變量的運算
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ù)組存儲和處理字符串
9.2.1 字符數(shù)組的定義
9.2.2 字符數(shù)組的引用
11.1 編譯預處理的概念
11.2 宏定義
11.2.1 不帶參數(shù)的宏定義
11.2.2 帶參數(shù)的宏定義
11.3 文件包含
11.4 條件編譯
本章小結(jié)
思考題
第12章 位運算
12.1 位運算的概念
12.2 位運算符的含義及其使用
12.2.1 按位“與”運算(&)
12.2.2 按位“或”運算(I)
12.2.3 按位“非”運算(~)
12.2 一按位“異或”運算(n)
12.2.5 “左移”運算(>)
12.2.7 長度不同的兩個數(shù)進行位運算的運算規(guī)則
12.2 ,8位復合賦值運算符
12.3 位段
12.3.1 位段的定義
12.3.2 位段的使用
本章小結(jié)
思考題
第13章 文件
13.1 文件與文件類型指針
13.1.1 文件
13.1.2 文件數(shù)據(jù)的存儲形式
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ōu)先級和結(jié)合性
附錄四 常用庫函數(shù)
一、數(shù)學函數(shù)
二、字符函數(shù)
三、字符串函數(shù)
四、輸入輸出函數(shù)
參考文獻
2.面向?qū)ο蟮某绦蛟O(shè)計
相對結(jié)構(gòu)化程序設(shè)計而言,面向?qū)ο蟮某绦蛟O(shè)計是一個全新的概念。在面向?qū)ο蟮某绦蛟O(shè)計中,引入了類、對象、屬性、事件和方法等一系列概念以及前所未有的編程思想。這里僅對面向?qū)ο蟮某绦蛟O(shè)計中的幾個基本概念作簡要說明,不作詳細討論。
在面向?qū)ο蟮某绦蛟O(shè)計中,最重要的思想是將數(shù)據(jù)(或稱數(shù)據(jù)成員)與處理這些數(shù)據(jù)的例程(或稱成員函數(shù))全部封裝到一個類中。只有屬于該對象的成員函數(shù)才能訪問自己的數(shù)據(jù)成員,從而達到了保護數(shù)據(jù)的目的。
每一種面向?qū)ο蟮某绦蛟O(shè)計語言都提供了三類機制,即封裝、繼承和多態(tài)。
“封裝”就是把數(shù)據(jù)和操作這些數(shù)據(jù)的代碼封裝在對象類里,對外界是完全不透明的,對象類完全擁有自己的屬性。程序設(shè)計者不需要了解對象類中的技術(shù)代碼,也無法對它們加以控制和干預,而只需要重復調(diào)用其對象。
“繼承”是允許在已有對象類的基礎(chǔ)上構(gòu)造新的對象類,即由一個類獲取另一個對象類的過程。
“多態(tài)”是指發(fā)出同樣的消息被不同的對象類接收時會產(chǎn)生不同的行為。這里所說的消息是指對類的成員函數(shù)的調(diào)用,而不同的行為是指不同的實現(xiàn)。利用多態(tài)性用戶只需發(fā)送一般形式的消息,而將所有的實現(xiàn)留給接收信息的對象,然后對象根據(jù)所接收的消息做出相應(yīng)的動作或操作。
面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)是:程序一般由類的定義和類的使用兩部分組成。在主程序中定義各對象并規(guī)定它們之間傳遞消息的規(guī)律。程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的,對象接收到消息后啟動有關(guān)方法完成相應(yīng)的操作。