本書分為基礎篇、提高篇和實驗篇;A篇主要內容包括程序設計和C語言基礎知識,以及順序、選擇和循環結構程序設計,使讀者初步建立起利用C語言進行簡單程序設計的思想,學會進行簡單的程序設計;提高篇主要內容包括函數、編譯預處理、數組等構造型數據類型、指針類型及對文件的操作,C語言模塊化的編程思想及對數組、指針類型的應用,學會使用構造型數據類型和指針類型處理問題,學會對文件進行操作;實驗篇共10個實驗。所有程序在Visual C環境下調試通過。提供程序代碼、課后習題指導和電子課件。
前 言
計算機程序設計基礎是高等學校各專業開設的一門必修計算機基礎課程,課程的重點在于培養學生的程序設計思想和程序設計能力,以適應當今社會對人才的需求。C語言由于自身的簡潔、緊湊和靈活性的特點,以及具備其他高級語言所不具備的低級語言的特性,而使得它成為一種在計算機軟件設計和計算機程序設計教學中備受歡迎的程序設計語言。
本書集結了眾位編者多年的教學經驗和應用C語言的體會,根據教育部高教司非計算機專業計算機教學指導委員會提出的高等學校計算機基礎課程教學基本要求,在廣泛參考有關資料的基礎上編寫而成的。
本書內容分為基礎篇、提高篇和實驗篇。
基礎篇分成6章,主要內容包括程序設計及C語言基礎知識、順序、選擇、循環結構程序設計以及編譯預處理等內容,使學習者初步建立起利用C語言進行簡單程序設計的思想,學會進行簡單程序設計。相對于第3版,我們在基礎篇中調整了部分內容的呈現順序,比如在第1章就對printf函數的基本應用作了簡單介紹,讓學習者能夠通過模擬編程盡早地的進入程序設計的狀態,激發學習者的學習興趣。
提高篇分成6章,主要內容包括數組等構造型數據類型、指針類型、函數、位運算以及文件的操作等內容,使學習者理解并體會C語言模塊化的編程思想以及對數組、指針類型的應用,學會使用構造型數據類型和指針類型處理問題,學會對文件進行操作。
實驗篇共設計了10個實驗,采用循序漸進的方式方法引導學習者掌握C程序設計的特點,詳細的上機實踐練習,便于讀者深入理解語法和培養程序設計能力。
同時本書在編寫時兼顧了全國計算機等級考試的要求。
本書在結構組織上合乎學習邏輯,內容循序漸進,每個知識點的介紹都以引起學生的學習熱情和興趣為出發點,以提高學生的程序設計思想和和能力為目標,既注重理論知識,又突出實用性。書中例題豐富,注重實用,且均在VisualC++6.0環境下調試通過。各章配有豐富的習題,以幫助讀者深入理解教材內容,鞏固基本概念,達到培養良好的程序設計能力和習慣的目的。
本書可作為高等學校本科生、高職高專軟件專業及相關專業的程序設計的入門教材,也可作為全國計算機等級考試的輔導教材,還可以供廣大程序設計初學者自學使用。
本書具有以下特點:
① 突出算法理解,重視實際操作。
② 加強對學生程序設計思想和實際編程能力的培養,以適應信息社會對人才的需求。
③ 提供多樣式的學習環境。本書同時提供豐富的教學資源,包括課程學習網站(http://211.64. 192.109/jpkc)、青理工C語言學習微信公眾號qdlgdxc、題源代碼、配套教學用電子課件及習題指導與參考答案。(本書向使用本書作為教材的教師免費提供配套教學電子課件及課后習題指導與參考答案,索取請登錄華信教育資源網www.hxedu.com.cn。)
④ 注重可讀性。本書的編寫小組由具有豐富的教學經驗,多年來一直從事并仍在從事計算機基礎教育的一線資深教師組成,教材內容組織合理,語言使用規范,符合教學規律。
本書由張敏霞、王秀鸞、遲春梅、孫麗鳳、白清華等編著并統稿,參加編寫的還有多年從事計算機教學的一線教師羅容、張偉、邵明、柳紅、王小燕、紀乃華、張莉、張媛媛、祝凱等,同時本書的編寫還得到了青島理工大學各級領導的關心和支持,在此一并表示深深的感謝。
由于作者水平有限,書中誤漏之處難免,敬請專家、教師和廣大讀者批評指正。
編著者
2017年1月
張敏霞,青島理工大學教授,從事計算機基礎課程教學三十余年,教研成果豐碩,出版多部著作,教學、寫作、科研經驗豐富。
第1章 C語言概況 1
1.1 程序設計的基本概念 1
1.1.1 程序和程序設計語言 1
1.1.2 程序設計的一般過程 1
1.1.2 結構化程序設計方法 2
1.2 C語言的初步知識 4
1.2.1 C語言的起源與特點 4
1.2.2 初識C程序 5
1.2.3 C語言字符集與標識符 6
1.2.4 C語言程序的基本構成 8
1.2.5 簡單的屏幕輸出 9
1.2.6 C語言程序的上機調試過程 10
本章小結 11
習題1 12
第2章 C語言基礎 13
2.1 數據類型 13
2.1.1 數據類型 13
2.1.2 基本數據類型標識符 13
2.2 常量和變量 14
2.2.1 常量 15
2.2.2 變量 18
2.3 算術運算 20
2.3.1 算術運算符 21
2.3.2 算術表達式 21
2.4 3個特殊的運算符 25
2.4.1 sizeof運算符 25
2.4.2 逗號運算符 25
2.4.3 取地址運算符& 25
本章小結 26
習題2 26
第3章 順序結構 28
3.1 C語言程序的語句 28
3.1.1 說明語句 28
3.1.2 執行語句 28
3.2 賦值運算 29
3.2.1 賦值運算符和賦值表達式 29
3.2.2 賦值語句 30
3.2.3 自增、自減運算符 32
3.3 數據的輸入和輸出 33
3.3.1 單個字符的輸入和輸出函數 33
3.3.2 格式化輸入和輸出函數 35
3.4 程序舉例 39
本章小結 42
習題3 42
第4章 選擇結構 45
4.1 關系運算 45
4.1.1 關系運算符 45
4.1.2 關系表達式 45
4.2 邏輯運算 46
4.2.1 邏輯運算符 47
4.2.2 邏輯運算的值 47
4.2.3 邏輯表達式 48
4.3 if語句 49
4.3.1 if語句的3種形式 49
4.3.2 if語句的嵌套 54
4.3.3 條件運算符和條件表達式 55
4.4 switch語句 56
4.5 程序舉例 58
本章小結 62
習題4 62
第5章 循環結構 68
5.1 while語句 68
5.2 do-while語句 71
5.3 for語句 72
5.4 轉移語句 77
5.4.1 break語句 77
5.4.2 continue語句 77
5.5 程序舉例 78
本章小結 82
習題5 83
第6章 編譯預處理 89
6.1 宏定義 89
6.1.1 不帶參數的宏定義 89
6.1.2 帶參數的宏定義 91
6.2 文件包含 93
6.3 條件編譯 94
本章小結 94
習題6 95
第7章 數組 98
7.1 一維數組 98
7.1.1 一維數組的定義 98
7.1.2 一維數組的初始化 99
7.1.3 一維數組元素的引用 100
7.1.4 一維數組的應用 101
7.2 二維數組 105
7.2.1 二維數組的定義 105
7.2.2 二維數組的初始化 106
7.2.3 二維數組元素的引用 106
7.2.4 二維數組應用舉例 107
7.3 字符數組 111
7.3.1 字符數組的定義 111
7.3.2 字符串與字符數組 111
7.3.3 字符數組的初始化 112
7.3.4 字符數組的輸入/輸出 113
7.3.5 字符串(字符數組)處理函數 115
7.3.6 字符數組的應用 118
本章小結 120
習題7 121
第8章 指針 127
8.1 指針變量 127
8.1.1 變量的指針和指針變量 127
8.1.2 指針變量的定義和初始化 128
8.1.3 指針變量的引用 129
8.2 數組指針變量 132
8.2.1 數組指針變量的定義和引用 132
8.2.2 二維數組的指針 136
8.2.3 指針與字符串 139
8.3 指針數組和二級指針變量 143
8.3.1 指針數組 143
8.3.2 二級指針變量 145
本章小結 145
習題8 147
第9章 函數 152
9.1 自定義函數 152
9.1.1 自定義函數的定義 152
9.1.2 自定義函數的返回值 153
9.1.3 自定義函數的調用 154
9.1.4 自定義函數的聲明 155
9.1.5 指針函數的定義和調用 156
9.2 函數間的數據傳遞 157
9.2.1 簡單變量作為函數參數 158
9.2.2 指針變量作為函數參數 159
9.2.3 數組名和數組指針變量作為
函數參數 160
9.2.4 行數組指針變量作為函數參數 162
9.2.5 字符型指針變量作為函數參數 163
9.2.6 指向函數的指針變量作為函數
參數 164
9.2.7 main( )函數的形參 167
9.3 函數的嵌套調用和遞歸調用 168
9.3.1 函數的嵌套調用 168
9.3.2 函數的遞歸調用 169
9.4 變量的存儲類別 173
9.4.1 局部變量及其存儲類別 173
9.4.2 全局變量及其存儲類別 176
9.4.3 函數的作用域和存儲類別 180
9.5 程序舉例 180
本章小結 183
習題9 184
第10章 結構體與共用體 195
10.1 自定義類型標識符 195
10.2 結構體的定義與引用 196
10.2.1 結構體類型的定義 196
10.2.2 結構體類型變量、數組和
指針變量的定義 197
10.2.3 結構體類型變量、數組和
指針變量的初始化 200
10.2.4 結構體類型變量、數組和
指針變量的引用 201
10.2.5 函數之間結構體類型數據的
傳遞 205
10.2.6 用指針處理鏈表 207
10.3 共用體的定義與引用 213
10.3.1 共用體類型的定義 213
10.3.2 共用體類型變量的定義 213
10.3.3 共用體變量的引用 214
10.4 枚舉類型 216
本章小結 218
習題10 218
第11章 位運算 222
11.1 位運算符 222
11.2 位運算符的功能 222
11.2.1 按位與運算(&) 222
11.2.2 按位或運算(|) 223
11.2.3 按位異或運算(^) 223
11.2.4 按位取反運算(~) 223
11.2.5 按位左移(<<) 224
11.2.6 按位右移(>>) 224
11.2.7 復合位賦值運算符 224
本章小結 225
習題11 225
第12章 數據文件 227
12.1 C語言文件 227
12.2 定義、打開和關閉文件 228
12.2.1 文件指針 228
12.2.2 打開文件(fopen( )函數) 228
12.2.3 關閉文件(fclose( )函數) 230
12.3 文件的輸入/輸出 230
12.3.1 fputc( )函數和fgetc( )函數 230
12.3.2 fgets( )函數和fputs( )函數 232
12.3.3 fprintf( )函數和fscanf( )函數 233
12.3.4 fread( )函數和fwrite( )函數 235
12.4 文件的定位 237
12.4.1 rewind( )函數 237
12.4.2 fseek( )函數和隨機讀/寫 237
12.4.3 ftell( )函數 238
本章小結 238
習題12 239
附錄 實驗 242
實驗一 初識C語言編程 242
實驗二 算術運算與標準函數使用 246
實驗三 順序結構的程序設計 247
實驗四 選擇結構程序設計 250
實驗五 循環結構程序設計 253
實驗六 數組類型程序設計 256
實驗七 指針程序設計 260
實驗八 函數程序設計 263
實驗九 結構體和共用體程序設計 267
實驗十 數據文件 269