C語言其實很簡單

內容簡介

本書是為零基礎的C語言初學者量身定做的,特別適合非計算機專業的讀者自學C語言。本書儘量避免使用專業術語,利用大量貼近生活的實例,用通俗易懂的方式講解C語言的基本概念和基本編程方法,並提供許多獨特的小竅門、小技巧、小口訣等,使讀者在輕鬆的環境中花費很少的時間就能掌握C語言,並套用自如。

目錄

第1章 從這裡愛上編程—程式設計

1.1 水面下的冰山——電腦程式和計算機語言 1

1.2 第一次親密接觸——縱覽C語言 3

1.2.1 一窺程式之美——C語言程式的結構 3

1.2.2 循序漸進,快樂學習——語句的光和影 4

1.2.3 程式里的說明書——注釋 6

1.2.4 免費翻譯服務——編譯和連結 8

1.3 先其利器——Visual C++ 6.0上機指導 10

1.4 天平稱物問題——進制轉換 15

1.4.1 這些進制是哪來的——二進制、八進制、十六進制 15

1.4.2 你還應知道這幾招——不同進制之間的轉換 15

第2章 色彩斑斕的積木

——數據類型、運算符和表達式

2.1 標識符、常量和變數 21

2.1.1 給我起個名字吧——標識符 21

2.1.2 有一說一——常量 22

2.1.3 程式里的儲物盒——變數 23

2.2 追根“數”源——細說數據類型 25

2.2.1 整型數據用C語言怎樣說 25

2.2.2 實型數據用C語言怎樣說 28

2.2.3 字元型數據用C語言怎樣說 32

2.2.4 字元串型常量用C語言怎樣說 36

2.3 諸算達人——運算符和表達式 39

2.3.1 再談加減乘除——算術運算 39

2.3.2 走,給我進去!——賦值 45

2.3.3 加加和減減——自增、自減 48

2.3.4 神秘的倒數第一——逗號運算 50

2.4 位在我心中——位運算 52

2.4.1 按位與& 52

2.4.2 按位或 | 52

2.4.3 按位異或 ^ 53

2.4.4 按位求反 ~ 54

2.4.5 按位左移 << 54

2.4.6 按位右移 >> 54

2.4.7 位運算的複合賦值 55

第3章 一戰到底——順序結構

3.1 整裝待發——C語言中的語句 56

3.2 別急,一個一個來——單個字元的輸出與輸入 57

3.2.1 拿好了鑰匙進倉庫——輸出與輸入概述 57

3.2.2 向螢幕開火——單個字元的輸出 58

3.2.3 飯要一口一口地吃——單個字元的輸入 59

3.3 更過癮的輸出與輸入——格式輸出與輸入 62

3.3.1 我有私人警察——格式輸出函式printf 62

3.3.2 我是快樂的快遞員——格式輸入函式scanf 68

3.4 常用系統數學函式 73

3.5 是不是有點專業級軟體的意思了——順序結構程式舉例 74

第4章 程式也能跑捷徑——選擇結構

4.1 計算機的判斷力——關係運算和邏輯運算 76

4.1.1 判斷真假的符號——關係運算符和邏輯運算符 76

4.1.2 火眼金睛斷真假——關係表達式和邏輯表達式 78

4.1.3 挑剔的“嗎+否則”——條件運算 82

4.2 如果——if語句 83

4.2.1 教室停電就不上課了——if語句的基本形式 83

4.2.2 一朝天子一朝臣——if語句的完整形式 88

4.2.3 如果里的如果——if語句的嵌套 94

4.3 多路開關——switch語句 98

4.3.1 司令的錦囊——switch語句的一般形式 99

4.3.2 我愛讀小說——switch語句的執行過程 100

4.4 goto去哪?想去哪就去哪!——goto語句 105

第5章 不必親手愚公移山——循環結構

5.1 看好了情況再下手——while語句 107

5.2 先下手幹了再說——do...while語句 110

5.3 我勤奮?我勞動?我光榮——for語句 112

5.3.1 按勞分配——for語句的基本形式 112

5.3.2 勞動者的工作模式——for語句的常見套用 114

5.3.3 有人接班我偷懶——表達式的變化 119

5.4 循環里的循環——循環的嵌套 122

5.5 埋頭幹活中的抬頭看路——continue語句和break語句 125

5.5.1 來源於生活——continue語句和break語句概述 125

5.5.2 下一個上——continue語句 127

5.5.3 前方施工請繞行——break語句 129

5.6 輕車熟路——程式控制結構小結和綜合舉例 130

第6章 把平房升級為高樓大廈——數組 137

6.1 直線升級——一維數組 137

6.1.1 一維數組的定義和引用 137

6.1.2 一維數組的初始化(定義時賦初值) 144

6.1.3 一維數組的套用 147

6.2 找東西和整理東西的藝術——查找和排序 152

6.2.1 這個經常有——查找技術 152

6.2.2 混亂之治——排序技術 156

6.3 立體升級——二維數組 163

6.3.1 二維數組的定義和引用 163

6.3.2 二維數組在記憶體中的存儲形式 164

6.3.3 二維數組的初始化(定義時賦初值) 164

6.3.4 二維數組可被看做是由一維數組組成的 169

第7章 蒙著面幹活——函式 171

7.1 從講故事開始——函式概述 171

7.2 該是學寫多段文章的時候了——函式定義和調用 173

7.2.1 自己創造函式——函式的定義 173

7.2.2 把自己寫的“段落”用起來——函式的調用 175

7.2.3 你歇著,我勞動——函式調用的過程 177

7.2.4 做好的菜端出來——函式的返回值 179

7.3 喂!聽到了嗎——函式的聲明 185

7.3.1 函式聲明的形式 186

7.3.2 函式聲明的位置 187

7.4 函式的嵌套調用和遞歸調用 189

7.4.1 函數裡的函式——函式的嵌套調用 189

7.4.2 克隆函式——函式的遞歸調用 190

7.5 變數的時空範圍——變數的作用域及存儲類別 196

7.5.1 空間範圍——局部變數和全局變數 196

7.5.2 時間範圍——變數的存儲類別 202

7.5.3 時空統一——局部變數和全局變數的存儲類別 206

7.6 給編譯做點兒手腳——預編譯處理 207

7.6.1 潛伏代號——宏定義 207

7.6.2 程式的自動複製貼上——檔案包含 211

7.6.3 早知當初,何必如此——條件編譯 212

第8章 璀璨的星星——指針 213

8.1 記憶體里的門牌號——地址和指針的基本概念 213

8.2 別拿地址不當值——指針變數 214

8.2.1 找張字條記地址——定義指針變數 215

8.2.2 這可不是說我——指針變數的基類型 217

8.2.3 把地址記下來——為指針變數賦值 218

8.2.4 指針運算倆兄弟——兩個運算符 220

8.3 原來咱倆是一個朋友圈的——數組與指針 223

8.3.1 下一站到哪了——指針變數的運算 223

8.3.2 我原來是指針變數——一維數組的指針 227

8.3.3 我是你的上級——二維數組的指針和行指針 232

8.3.4 來自星星的數組——指針數組和指針的指針 238

8.3.5 指針三家人——指針小結 242

8.4 有了地址也可以找我幫忙啊——函式與指針 244

8.4.1 地址給我,我來幫忙——指針變數做函式參數 244

8.4.2 吃葡萄不抓葡萄粒,抓住葡萄的把柄——數組做函式參數 249

8.4.3 指針私房菜——返回地址值的函式 256

8.4.4 函式遙控器——函式的指針 256

8.5 一兩撥千斤——字元串的指針 259

8.5.1 字元串的存儲 259

8.5.2 字元串的輸出和輸入 263

8.5.3 字元串處理技術 267

8.6 另類運行程式——main函式的參數 286

第9章 我的類型我做主——結構體與共用體 289

9.1 多功能收納盒——結構體 289

9.1.1 繪製收納盒設計圖——定義結構體類型 289

9.1.2 收納盒製作——使用結構體變數 290

9.1.3 一本通訊錄——結構體類型的數組 294

9.1.4 結構體的弓箭手——結構指針變數 296

9.1.5 重口味與輕口味——結構體類型數據做函式參數 297

9.1.6 大收納盒裡套小收納盒——結構體類型的嵌套 301

9.2 公路橋洞——共用體 302

9.3 給類型起個“綽號”——類型定義符typedef 304

9.4 記憶體空間的批發和零售——動態存儲分配 306

9.5 電影院裡的座次問題——鍊表 310

9.5.1 鍊表的建立和遍歷 311

9.5.2 鍊表結點的插入和刪除 317

9.5.3 鍊表的高級兄弟——高級鍊表簡介 320

第10章 得檔案者得天下——檔案 322

10.1 一針hold住全檔案——檔案指針 322

10.1.1 與檔案牽手——檔案的打開 322

10.1.2 與檔案分手——檔案的關閉 326

10.1.3 檔案操作流程 326

10.2 搬運流水線——檔案的讀寫 327

10.2.1 手指和筆尖——檔案位置指針 327

10.2.2 文本檔案的讀寫 328

10.2.3 二進制檔案的讀寫 332

10.3 這是手工活兒——檔案的隨機讀寫 337

第11章 編程的經驗財富——算法與數據結構基礎 345

11.1 “一招鮮”——算法 345

11.1.1 何謂算法 345

11.1.2 算法的控制結構 346

11.1.3 算法複雜度 346

11.2 數據結構概述 347

11.2.1 何謂數據結構 347

11.2.2 數據結構的類型 348

11.3 早出晚歸的勤快人——棧(堆疊) 349

11.3.1 何謂棧(堆疊) 349

11.3.2 堆疊的基本運算 350

11.3.3 堆疊的邏輯結構和存儲結構 350

11.3.4 堆疊的套用 351

11.4 先來後到——佇列 352

11.4.1 何謂佇列 352

11.4.2 佇列的邏輯結構和存儲結構 352

11.4.3 循環佇列的基本運算 353

11.5 倒置的樹——樹與二叉樹 354

11.5.1 樹和樹的基本概念 354

11.5.2 二叉樹的基本概念 355

11.5.3 二叉樹的存儲結構 356

11.5.4 二叉樹的遍歷 356

第12章 程林高手武功秘籍——軟體開發基礎 360

12.1 編程之道——程式設計方法 360

12.1.1 編程Style——程式設計風格 360

12.1.2 組裝零件——結構化程式設計 361

12.1.3 這個feel,爽!——面向對象程式設計 361

12.2 不懂門道看熱鬧,看完咱也吊一吊——軟體工程基礎 364

12.2.1 何謂軟體 364

12.2.2 軟體生命周期 365

12.2.3 需求分析及其方法 366

12.2.4 軟體設計及其方法 367

12.2.5 我是來找茬的——軟體測試 369

12.2.6 誰來改正——程式的調試 371

12.3 資訊時代是怎樣煉成的——資料庫和資料庫設計初步 371

12.3.1 關係型資料庫及相關概念 372

12.3.2 關係代數 374

12.3.3 資料庫系統 378

12.3.4 資料庫設計者眼裡的世界——E-R模型 380

12.3.5 資料庫設計 381

附錄一 常用字元ASCII碼對照表 383

附錄二 C語言中的關鍵字 384

附錄三 C語言運算符的優先權和結合性 385

索引 386

參考文獻 391

相關詞條

熱門詞條

聯絡我們