c程序設計

田淑清著書籍

《c程序設計》是2003年8月1日電子工業出版社出版的圖書,作者是田淑清。本書主要講述了C語言中最基本的數據類型等有關內容。

內容簡介


為了使初學者易於接受,能儘快地學會用C語言編寫程序並上機實踐,在第一部分中只介紹了整數中的int類型和浮點數float,double類型;介紹了對這三種類型數據的輸入和輸出,從而暫時避開了C語言中繁多的整數類型和整數的各種表示方式、避開了煩瑣的輸入、輸出的各種規則。
在這一部分,介紹了結構化程序設計的基本組成結構以及相關的語句,使讀者能掌握一些最基本的演演算法;學習編寫最簡單的、具有良好風格的C語言程序。
在第5章介紹了函數的初步知識之後,所有章節中的例題基本都以函數的形式給出,要求讀者自這一章開始,全部運用函數來完成各個練習,以便由易到難逐步培養編寫C函數的能力,逐步掌握對函數的應用。
在這部分,結合C語言的學習,陸續介紹了程序設計中的一些基本演演算法,如數的交換、累加、連乘、選最大最小數、遞推、枚舉等。在這些演演算法的基礎上,介紹了求一元高次方程的一個根、求定積分等有關數值計算的基本演演算法。
第6章是有關結構化程序設計的基本常識,不需要死記硬背,其中的內容應該體現在具體的程序設計中。
在這一段的學習時間內,讀者可在教師或有關專業人員的指導下,參考附錄F中“簡單的上機操作”中的內容,在Turbo C的環境下運行自己編寫的練習程序,通過上機實踐,逐步熟悉上機操作的步驟,並有意識地去練習看懂系統給出的各種信息,為培養自己獨立調試程序的能力做好準備。
總的來說,這部分的內容難度較小,學起來應該並不困難。
在第二部分中,引進了指針的概念,在C語言中,指針幾乎是無處不在,只有建立了“地址”、“指針”以及“引用指針所指存儲單元”的概念才能正確地使用數組、字元串,才能在函數之間通過實參和形參正確地傳送數據。這也是學習C語言的重點和難點所在,希望讀者從一開始,就要特別重視指針概念的建立,以便為後續章節的學習打下基礎。
在這一部分,進一步介紹C語言中的各種複雜數據結構,介紹了各種數據結構在函數間的數據傳遞,同時也討論了函數的遞歸調用,文件的基本應用。
在第7章介紹了字元類型,字元處理是當前程序設計中很重要的一個方面,因此讀者應該很好地掌握。
第9、10章分別介紹了一維和二維數組,數組是程序設計中不可缺少的一種數據結構,而在C語言中,數組和指針又有著密不可分的關係,在這兩章中分別討論了一維和二維數組和指針的關係、討論了如何通過指針引用數組元素、如何通過指針向函數傳遞數組。並以大量的例題,例舉了利用數組這一存儲結構,進行查找、插入、刪除、排序等的基本演演算法。
第16章介紹了C語言中另外一種複雜的數據結構——結構體類型。在這一章除討論了結構體變數的一般應用外,重點介紹了利用指向本身的結構體,通過動態存儲分配建立動態鏈表的演演算法,以及對鏈表進行基本操作(插入、刪除結點等)的演演算法。
在計算機的應用中,建立“文件”的概念和掌握對文件的操作是一種最基本的技能,第21章,簡單介紹了有關文件的概念以及C程序中對文件的基本操作。
在學習這一部分內容時,讀者應當參考附錄F“簡單的程序調試”中介紹的內容,在Turbo C環境下,逐步學會調試程序的簡單步驟,培養自己獨立調試程序的能力。在程序設計中,這一能力的培養是十分重要的。
以上兩部分,在介紹C語言的同時,較側重於幫助讀者掌握用C語言來進行“程序設計”的基本知識,因而盡量避開了C語言中的一些語法細節。
第三部分就C語言的“語言”內容進行了補充,例如:第13章的“用戶標識符的作用域”,第14章的“編譯預處理”,第17章的“C語言中的整型數和整型變數”,第20章的“在終端上按格式進行輸入和輸出”等章節,都是在真正用C語言進行程序設計時所必須具備的知識。這些章節的內容相對獨立,有關內容的教與學,可以根據學時的安排,按需要隨時穿插進行;讀者也可根據需要隨時查閱。
儘管作者根據多年的教學經驗,試圖按照初學者的學習規律來安排本書的內容,主觀上有著良好的願望,但由於水平的限制,書中會有很多不足和錯誤,歡迎廣大讀者批評和指正。

圖書目錄


第1章 C程序設計的初步知識
1.1 簡單 C程序的組成和格式
1.2 十進位整型數和實型數
1.2.1 常量
1.2.2 十進位整型常量
1.2.3 浮點常量
1.2.4 用定義一個符號名的方法來代表一個常量
1.3 標識符
1.3.1 關鍵字
1.3.2 預定義標識符
1.3.3 用戶標識符
1.4 整型變數和實型變數
1.4.1 變數
1.4.2 整型變數
1.4.3 浮點型變數
1.4.4 給變數置初值
1.4.5 定義不可變的變數
1.5 可進行算術運算的表達式
1.5.1 基本的算術運算符
1.5.2 運算符的優先順序與結合性和算術表達式
1.5.3 強制類型轉換表達式
1.6 賦值表達式
1.6.1 賦值運算符和賦值表達式
1.6.2 複合的賦值表達式
1.6.3 賦值運算中的類型轉換
1.7 自加、自減運算符和逗號運算符
1.7.1 自加運算符(++)和自減運算符(--)
1.7.2 逗號運算符和逗號表達式
習題
第2章 簡單的C語句及其順序程序結構
2.1 賦值語句
2.2 整型數和實型數的簡單輸入和輸出語句
2.2.1 調用 printf 函數輸出數據到終端
2.2.2 調用 scanf 函數從終端鍵盤輸入數據
2.3 複合語句和空語句
2.3.1 複合語句
2.3.2 空語句
習題
第3章 分支結構
3.1 關係運算和邏輯運算
3.1.1 C 語言中的邏輯值
3.1.2 關係運算符和關係表達式
3.1.3 邏輯運算符和邏輯表達式
3.2 用if 語句構成的分支結構
3.2.1 if 語句
3.2.2 嵌套的 if 語句
3.3 由條件表達式構成的分支結構
3.4 由switch 語句和 break 語句構成的分支結構
3.4.1 switch 語句
3.4.2 switch 語句的執行過程
3.4.3 在 switch 語句體中使用 break 語句
習題
第4章 循環結構4
4.1 用for語句構成的循環結構
4.1.1 for 循環的一般形式?
4.1.2 for 循環的執行過程
4.1.3 有關 for 語句的說明
4.2 用while 語句構成的循環結構
4.2.1 while 循環的一般形式
4.2.2 while 循環的執行過程
4.3 用do-while語句構成的循環結構
4.3.1 do-while 循環的一般形式
4.3.2 do-while 循環的執行過程
4.4 循環結構的嵌套
4.5 幾種循環結構的比較
4.6 break 和 continue 語句在循環體中的作用
4.6.1 break 語句
4.6.2 continue 語句
4.7 語句標號和 goto 語句
4.7.1 語句標號
4.7.2 goto 語句
4.8 程序舉例
習題
第5章 函數的初步知識
5.1 庫函數
5.2 函數的定義和返回值
5.2.1 函數定義的語法
5.2.2 函數的返回值
5.3 函數的調用
5.3.1 函數的兩種調用方式
5.3.2 函數調用時的語法要求
5.4 調用函數和被調用函數之間的數據傳遞
5.5 函數原型的說明
5.5.1 函數原型的說明語句
5.5.2 函數原型說明語句的位置
5.6 程序舉例
習題
第6章 演演算法和結構化程序設計
6.1 程序和程序設計
6.1.1 程序
6.1.2 程序設計
6.2 演演算法
6.3 結構化程序設計和模塊化結構
6.3.1 結構化程序
6.3.2 模塊化結構
6.4 怎樣評價一個程序
習題
第7章 字元數據和字元數據處理
7.1 字元常量
7.1.1 常規字元常量
7.1.2 轉義字元常量
7.1.3 可對字元量進行的運算
7.2 字元變數
7.3 字元的輸入和輸出
7.3.1 調用 printf 和 scanf 函數
7.3.2 調用 putchar 和 getchar 函數
7.3.3 調用 getche 和 putche 函數
7.3.4 調用 getch 和 putch 函數
7.4 程序舉例
習題
第8章 地址和指針
8.1 什麼是地址?什麼是指針?
8.2 指針變數的定義和指針變數的基類型
8.3 給指針變數賦值
8.3.1 使指針指向一個對象
8.3.2 給指針變數賦“空”值
8.4 對指針變數的操作
8.4.1 通過指針或地址來引用一個存儲單元
8.4.2 移動指針
8.4.3 指針比較
8.5 函數之間地址值的傳遞
8.5.1 地址或指針變數作為實參
8.5.2 在被調用函數中直接改變調用函數中的變數的值
8.5.3 函數返回地址值
習題?
第9章 一維數組
9.1 一維數組的定義和一維數組元素的引用
9.1.1 一維數組的定義
9.1.2 一維數組元素的引用
9.1.3 一維數組的初始化
9.1.4 通過賦初值定義數組的大小
9.2 一維數組的應用舉例(一)
9.3 一維數組和指針
9.3.1 一維數組和數組元素的地址
9.3.2 通過數組的首地址引用數組元素
9.3.3 通過指針來引用一維數組元素
9.3.4 用指針帶下標的形式引用一維數組元素
9.4 一維數組名或數組元素作實參
9.4.1 數組元素作實參
9.4.2 數組名作實參
9.4.3 數組元素地址作為實參
9.5 一維數組應用舉例(二)
習題
第10章 二維數組
10.1 二維數組的定義和二維數組元素的引用
10.1.1 二維數組的定義
10.1.2 二維數組元素的引用
10.1.3 二維數組的初始化
10.1.4 通過賦初值定義二維數組的大小
10.2 二維數組的應用舉例(一)
10.3 二維數組和指針?
10.3.1 二維數組和數組元素的地址
10.3.2 通過地址來引用二維數組元素
10.3.3 通過建立指針數組來引用二維數組元素
10.3.4 通過建立行指針來引用二維數組元素
10.4 通過建立指針數組和一維數組來構造二維數組
10.5 二維數組名和指針數組作為實參
10.5.1 二維數組名作為實參
10.5.2 指針數組作為實參
10.6 二維數組應用舉例(二)
習題
第11章 字元串
11.1 用一維字元數組來存放字元串
11.1.1 通過賦初值的方式給一維字元數組賦字元串
11.1.2 在 C 程序執行過程中給一維字元數組賦字元串
11.2 使用指針指向一個字元串
11.2.1 通過賦初值的方式使指針指向字元串
11.2.2 通過賦值運算使指針指向字元串
11.2.3 用字元數組作為字元串和用指針指向的字元串之間的區別
11.3 字元串的輸入和輸出
11.3.1 輸入和輸出字元串時的必要條件
11.3.2 逐個字元輸入和輸出
11.3.3 用格式說明符“%s”進行整串輸入和輸出
11.3.4 調用 gets和puts 函數在終端按行輸入輸出字元
11.4 字元串數組
11.5 用於字元串處理的函數
11.6 程序舉例
習題
第12章 對函數的進一步討論
12.1 傳給 main () 函數的參數
12.2 通過實參向函數傳遞函數名或指向函數的指針
12.3 函數的遞歸調用
習題
第13章 C語言中用戶標識符的作用域和存儲類
13.1 內部變數、外部變數和存儲分類
13.1.1 用戶標識符的作用域
13.1.2 內部變數、外部變數和存儲分類
13.2 內部變數及其作用域和生存期
13.2.1 auto 變數
13.2.2 register 變數
13.2.3 靜態存儲類的內部變數
13.3 外部變數及其作用域和生存期
13.3.1 外部變數的作用域和生存期
13.3.2 在同一編譯單位內使用extern說明符
13.3.3 在不同編譯單位內使用extern說明符
13.3.4 靜態外部變數
13.4 函數的存儲分類
13.4.1 用 extern 說明函數
13.4.2 用 static 說明函數
13.5 在 Turbo C 集成環境下連接多個編譯單位的方法
習題S
第14章 編譯預處理
14.1 宏替換S
14.1.1 不帶參數的宏定義
14.1.2 帶參數的宏定義
14.1.3 終止宏定義
14.2 文件包含
14.3 條件編譯
14.4 #line 行
習題
第15章 動態存儲分配
15.1 malloc 函數和 free 函數
15.2 calloc 函數
15.3 realloc 函數
習題
第16章 結構體類型和用戶定義類型
16.1 用 typedef 說明一種新類型名
16.2 結構體類型
16.3 結構體類型的說明
16.4 結構體類型的變數、數組和指針的定義
16.5 給結構體變數、數組賦初值
16.6 引用結構體類型變數中的數據
16.7 通過結構體組成較複雜的存儲結構
16.8 函數之間結構體變數的數據傳遞
16.8.1 向函數傳遞結構體變數的成員
16.8.2 向函數傳遞結構體變數
16.8.3 傳遞結構體的地址
16.8.4 函數值為結構體類型
16.8.5 函數的返回值可以是指向結構體變數的指針類型
16.9 利用結構體變數構成鏈表
16.9.1 結構體中含有可以指向本結構體的指針成員
16.9.2 動態鏈表的概念
16.9.3 單向鏈表
16.9.4 單向環形鏈表
16.9.5 雙向鏈表
習題
第17章 C 語言中的整型數和整型變數
17.1 十進位數和二、八、十六進位數之間的轉換
17.1.1 十進位數和二進位數之間的轉換
17.1.2 十進位數和八進位數之間的轉換
17.1.3 十進位數和十六進位數之間的轉換
17.1.4 二進位數與八進位數、十六進位數間的轉換
17.2 整數在內存中的存儲形式
17.2.1 正整數
17.2.2 負整數
17.2.3 無符號整數
17.3 C 語言中的整數類型
17.4 C 語言中的整數類型之間的轉換
習題
第18章 共用體、位段結構和枚舉類型
18.1 共用體
18.1.1 共用體類型的說明和變數定義
18.1.2 共用體變數的引用
18.1.3 共用體應用舉例
18.2 位段結構
18.3 枚舉類型
習題
第19章 位運算
19.1 位運算符和位運算
19.1.1 位運算符
19.1.2 位運算符的運算功能
19.2 位運算的簡單應用
習題
第20章 在終端上按格式進行數據的輸入和輸出
20.1 調用 printf() 在終端上按格式進行數據的輸出
20.1.1 printf() 函數的一般調用形式
20.1.2 printf () 函數中常用的格式說明
20.1.3 調用 printf (函數時的注意事項
20.2 調用 scanf() 在終端上按格式進行數據的輸入
20.2.1 scanf() 函數的一般調用形式
20.2.2 scanf () 函數中常用的格式說明
20.2.3 通過 scanf 函數從鍵盤輸入數據
習題
第21章 文件
21.1 文件的概念
21.2 文件指針
21.3 打開文件
21.4 關閉文件
21.5 getc(fgetc)函數和putc(fputc)函數
21.6 判文件結束函數 feof
21.7 fscanf 函數和fprintf函數
21.8 fgets函數和fputs函數
21.9 fread函數和fwrite函數
21.10 文件定位函數
21.10.1 fseek函數
21.10.2 ftell函數
21.10.3 rewind 函數
習題附錄
附錄A C 語言的關鍵字
附錄B 雙目算術運算中兩邊運算量類型轉換規律
附錄C 運算符的優先順序和結合性
附錄D 常用字元與 ASC Ⅱ代碼對照表
附錄E Turbo C 2.0 常用庫函數
附錄F 簡單的上機操作和程序的調試
參考文獻
張長海 陳娟 編