●第0章 學習攻略0.1 編程的魔力0020.2 C語言的來源及特點0020.3 讓計算機開口說話0040.4 C語言的用途0050.5 學習C語言的方法005第1章 步入C的世界—Hello C1.1 C語言的開發環境0091.1.1 C語言常用的開發環境0091.1.2 VC++開發環境的安裝0091.1.3 Turbo C 2.0開發環境的安裝0121.2 認識常用開發環境0131.2.1 認識VC++開發環境0131.2.2 認識Turbo開發環境0141.3 開始C編程—我的第1個C程序0151.3.1 程序編寫及運行流程0151.3.2 在Visual C++ 6.0中開發C程序0161.3.3 在Turbo C中開發C程序0181.4 高手點撥0201.5 實戰練習020第2章 C程序的組成2.1 簡單例子0222.2 聲明區0222.2.1 頭文件0222.2.2 函數聲明0232.2.3 變量聲明0242.3 主函數0252.4 函數定義區0262.5 注釋0262.6 代碼的規矩0272.7 高手點撥0272.8 實戰練習028第3章 C語言的基素—字符集、標識符和關鍵字3.1 標識符和關鍵字0303.1.1 標識符0303.1.2 關鍵字0303.2 常量0303.2.1 什麼是常量0303.2.2 常量的聲明0323.3 常量的類別0323.3.1 數值常量0323.3.2 字符常量0333.3.3 字符串常量0343.3.4 符號常量0343.4 綜合應用—常量指針與指針常量0363.5 高手點撥0363.6 實戰練習037第4章 變量4.1 變量0404.1.1 什麼是變量0404.1.2 變量的定義與聲明0414.2 變量的類別0414.2.1 局部變量0414.2.2 形式參數0424.2.3 全局變量0434.3 變量的存儲類型0454.3.1 自動變量0454.3.2 靜態變量0454.3.3 外部變量0464.3.4 寄存器變量0474.4 變量的賦值和初始化0484.5 綜合應用—根據變量的不同決定運行的結果0504.6 高手點撥0524.7 實戰練習052第5章 計算機如何識數—數制5.1 二進制0545.2 八進制0555.3 十進制0555.4 十六進制0555.5 數制間的轉換0565.6 綜合應用—數制轉換0575.7 高手點撥0575.8 實戰練習058第6章 數據的種類—數據類型6.1 數據類型的分類0606.1.1 基本數據類型0606.1.2 構造數據類型0606.1.3 指針數據類型0606.1.4 空類型0616.2 整型0616.3 字符型0636.4 浮點型0656.5 類型轉換0676.5.1 隱式轉換0676.5.2 顯式轉換0696.6 綜合應用—類型轉換0706.7 高手點撥0706.8 實戰練習071第7章 C世界中的加減乘除—運算符和表達式7.1 C中的運算符和表達式0747.1.1 運算符0747.1.2 表達式0747.2 算術運算符和表達式0757.2.1 算術運算符0757.2.2 算術表達式0757.2.3 應用舉例0757.3 關繫運算符和表達式0777.3.1 關繫運算符0777.3.2 關繫表達式0777.3.3 應用舉例0777.4 邏輯運算符和表達式0787.4.1 邏輯運算符0787.4.2 邏輯表達式0797.4.3 應用舉例0797.5 條件運算符和表達式0817.6 賦值運算符和表達式0827.6.1 賦值運算符0827.6.2 賦值表達式0827.6.3 應用舉例0837.7 自增、自減運算符0847.8 逗號運算符和表達式0857.9 位運算符0867.9.1 按位與運算符0867.9.2 按位或運算符0877.9.3 按位異或運算符0877.9.4 按位取反運算符0887.9.5 左移運算符0887.9.6 右移運算符0897.9.7 位運算賦值運算符0907.9.8 位運算應用0907.10 優先級與結合性0937.10.1 算術運算符的優先級和結合性0937.10.2 關繫運算符的優先級和結合性0937.10.3 邏輯運算符的優先級和結合性0937.10.4 賦值運算符的優先級與結合性0947.11 綜合應用—根據輸入值計算結果0947.12 高手點撥0957.13 實戰練習095第8章 順序結構與選擇結構8.1 程序流程概述0988.2 語句0988.2.1 基本賦值語句0988.2.2 表達式語句0998.2.3 基本輸入/輸出語句0998.2.4 控制語句1018.2.5 空語句和復合語句1018.3 順序結構與語句1028.4 選擇結構1038.4.1 選擇結構1038.4.2 單分支選擇結構—if語句1038.4.3 雙分支選擇結構—if-else語句1068.4.4 多分支選擇結構—if-else的嵌套形式1078.4.5 多分支選擇結構—switch語句1118.5 綜合應用—根據不同的利潤計算獎金1138.6 高手點撥1148.7 實戰練習115第9章 C程序的流程—循環結構與轉向語句9.1 循環結構與語句1189.1.1 循環結構1189.1.2 當型循環語句—for語句1199.1.3 當型循環語句—while語句1229.1.4 直到型循環語句—do-while語句1239.1.5 循環的嵌套1259.2 轉向語句1289.2.1 goto語句1299.2.2 break語句1299.2.3 continue語句1319.3 綜合應用—簡單計算器1329.4 高手點撥1349.5 實戰練習134第10章 用戶與計算機的交互—輸入和輸出10.1 標準輸入/輸出13610.2 格式化輸入/輸出13610.2.1 格式化輸出函數—printf()13610.2.2 格式控制字符13810.2.3 格式化輸入函數—scanf()14210.3 字符輸入/輸出14410.3.1 字符輸出函數—putchar()14410.3.2 字符輸入函數—getchar()14610.4 字符串輸入/輸出14610.4.1 字符串輸出函數—puts()14610.4.2 字符串輸入函數—gets()14710.5 高手點撥14810.6 實戰練習148第11章 數組11.1 數組概述15211.2 一維數組15211.2.1 一維數組的定義15211.2.2 一維數組的初始化15511.2.3 一素的操作15611.2.4 數組作為參數傳遞15811.2.5 一維數組的應用舉例16011.3 二維數組16211.3.1 二維數組的定義16211.3.2 二維數組的初始化16311.3.3 二素的操作16311.3.4 二維數組的應用舉例16411.4 多維數組16511.5 綜合應用—楊輝三角16611.6 高手點撥16711.7 實戰練習168第12章 字符數組12.1 字符數組概述17012.2 字符數組17012.2.1 字符數組的初始化17012.2.2 字符數組的引用17012.2.3 字符數組的輸入與輸出17112.3 字符串17212.3.1 字符串和字符數組17212.3.2 字符串的輸入/輸出17412.3.3 字符串應用舉例17512.4 綜合應用—自動分類字符17712.5 高手點撥17812.6 實戰練習179第13章 程序的靈魂—算法與流程圖 13.1 算法基礎18313.1.1 算法的概念18313.1.2 算法的特性18313.1.3 簡單算法舉例—解方程18413.2 流程圖的基礎18513.2.1 流程素及含義18513.2.2 流程圖的繪制18613.3 如何表示一個算法18813.3.1 用自然語言表示算法18813.3.2 用流程圖表示算法19013.3.3 用傳統流程圖表示3種基本結構19213.3.4 用N-S圖表示算法19313.3.5 用偽代碼表示算法19513.3.6 用計算機語言表示算法19513.4 結構化程序設計方法19613.5 綜合應用—二次方程19713.6 高手點撥19913.7 實戰練習200第14章 基礎算法14.1 排序算法20214.1.1 桶排序法20214.1.2 冒泡排序法20314.1.3 快速排序法20414.2 棧、隊列、鏈表算法20614.2.1 隊列20614.2.2 棧20914.2.3 鏈表21114.2.4 模擬鏈表21614.3 枚舉算法21814.4 搜索算法22014.4.1 深度優先搜索22014.4.2 廣度優化搜索22014.5 圖的遍歷算法22114.5.1 深度和廣度的區別22114.5.2 圖的深度優化遍歷22114.5.3 圖的廣度優化遍歷22314.6 綜合應用—寶島探險22514.7 高手點撥22714.8 實戰練習228第15章 C世界中的高級算法15.1 模擬算法23015.2 簡單動態規劃23115.3 用遞歸實現回溯算法23315.4 最短路徑算法23615.4.1 隻有五行的算法—Floyd-Warshall23615.4.2 Dijkstra 算法—單源最短邊23715.4.3 Bellman-Ford—解決負權邊23715.4.4 Bellman-Ford的隊列優化23815.4.5 最短路徑算法對比分析23815.5 樹算法24015.5.1 二叉樹算法24015.5.2 堆算法24115.5.3 並查集24115.6 綜合應用—鏢局運鏢24315.7 高手點撥24515.8 實戰練習246第16章 數學在程序設計中的應用16.1 常用數學函數24816.2 質因數分解24916.3 最大公約數的歐幾裡得算法25116.4 加法原理與乘法原理25216.5 排列與組合25316.6 綜合應用—圓排列、可重集排列25416.7 高手點撥25516.8 實戰練習256第17章 算法設計的常用思路17.1 分治算法25817.2 動態規劃算法25917.3 貪心算法26117.4 回溯算法26317.5 高手點撥26517.6 實戰練習265第18章 算法競賽實例18.1 衡量程序質量的標準26818.2 Hilbert曲線26918.3 驗證四色問題27118.4 n女王問題27318.5 跳馬問題27418.6 生成全部排列及其應用27618.7 貪喫蛇遊戲27818.8 快速排序28318.9 幻方28418.10 高精度計算28818.11 高手點撥28918.12 實戰練習290第19章 函數19.1 函數概述29319.1.1 什麼是函數29319.1.2 函數的分類29419.2 函數的定義29419.3 函數的返回值及類型29719.3.1 函數的返回值29719.3.2 函數的類型29819.4 函數的參數及傳遞方式30019.4.1 函數的參數30119.4.2 函數參數的傳遞方式30219.5 函數的調用30319.5.1 函數調用方式30419.5.2 函數的聲明30519.5.3 函數的嵌套調用30719.5.4 函數的遞歸調用30819.6 內部函數和外部函數31219.6.1 內部函數31219.6.2 外部函數31319.7 main()函數31419.8 綜合應用—用截弦法求方程的根31519.9 高手點撥31619.10 實戰練習318第20章 函數中的變量20.1 局部變量與全局變量32020.1.1 局部變量32020.1.2 全局變量32120.2 變量的存儲類別32320.2.1 自動類型(auto)32420.2.2 寄存器類型(register)32420.2.3 靜態類型(static)32520.2.4 外部類型(extern)32720.3 綜合應用—日期判斷32820.4 高手點撥32920.5 實戰練習330第21章 文件21.1 文件概述33221.1.1 文件類型33221.1.2 C如何操作文件—文件指針33221.1.3 文件緩衝區33321.2 文件的打開和關閉33321.2.1 文件的打開—fopen()函數33321.2.2 文件的關閉—fclose()函數33421.2.3 文件結束檢測—feof()函數33521.3 文件的順序讀寫33521.3.1 文本文件中字符的輸入/輸出33521.3.2 文本文件中字符串的輸入/輸出33721.3.3 格式化輸入/輸出33921.3.4 二進制文件的輸入/輸出—數據塊讀寫34021.4 文件的隨機讀寫34221.5 綜合應用—文件操作34321.6 高手點撥34521.7 實戰練習346第22章 庫函數概覽22.1 標準C庫函數34822.2 數學函數34822.2.1 絕對值函數34822.2.2 冪函數和開平方函數34922.2.3 指數函數和對數函數35022.2.4 三角函數35022.2.5 取整函數和取餘函數35022.3 字符串處理函數35122.3.1 字符串長度函數35122.3.2 字符串連接函數35222.3.3 字符串復制函數35322.3.4 字符串比較函數35322.3.5 字符串查找函數35422.3.6 字符串填充函數35522.4 字符處理函數35622.4.1 字符類型判斷函數35622.4.2 字符大小寫轉換函數35722.5 轉換和存儲管理函數35822.5.1 轉換函數35822.5.2 存儲管理函數35922.6 隨機函數36022.6.1 初識隨機函數36022.6.2 使用隨機函數36122.7 日期和時間處理函數36222.8 診斷函數36322.9 命令行參數36422.10 其他函數36522.10.1 exit()函數36622.10.2 qsort()函數36622.11 綜合應用—猜數字遊戲36722.12 高手點撥36922.13 實戰練習370第23章 合理利用內存—位運算23.1 二進制數37223.1.1 二進制37223.1.2 無符號數和有符號數37223.2 位運算符37223.2.1 按位與運算符37323.2.2 按位或運算符37323.2.3 按位異或運算符37423.2.4 按位取反運算符37523.2.5 左移運算符37523.2.6 右移運算符37523.2.7 位運算賦值運算符37623.2.8 位運算應用37723.3 位域37923.4 綜合應用—數制轉換38023.5 高手點撥38123.6 實戰練習382第24章 結構體和聯合體24.1 結構體38424.1.1 結構體類型38424.1.2 定義結構體變量38524.1.3 初始化結構體變量38624.1.4 結構體變量的引用38724.2 結構體數組38824.2.1 定義結構體數組38824.2.2 初始化結構體數組39024.2.3 結構素的引用39024.3 結構體與函數39224.3.1 結構體作為函數的參數39224.3.2 結構體作為函數的返回值39424.4 聯合體39524.4.1 聯合體類型39524.4.2 聯合體變量的定義39624.4.3 聯合體變量的初始化39724.4.4 聯合體變量的引用39924.5 結構體和聯合體的區別與聯繫40024.6 綜合應用—計算學生成績40024.7 高手點撥40224.8 實戰練習403第25章 數據管理者—數據結構25.1 數據結構概述40625.2 線性表40625.2.1 順序表40725.2.2 單鏈表41025.3 棧41625.3.1 棧的基本運算41625.3.2 順序棧的類型定義41725.3.3 鏈式棧的類型定義41725.4 隊列41725.4.1 隊列的基本運算41825.4.2 順序隊列類型定義41825.4.3 鏈隊列類型定義41925.5 二叉樹41925.6 查找42025.6.1 順序查找42025.6.2 折半查找42225.7 排序42325.7.1 冒泡排序法42425.7.2 選擇排序法42525.7.3 插入排序法42625.8 綜合應用—鏈表的反轉42725.9 高手點撥43025.10 實戰練習439第26章 內存的快捷方式—指針26.1 指針概述44326.1.1 指針的類型44326.1.2 指針所指向的類型44326.1.3 指針的值44326.1.4 指針所占內存44326.2 指針的算術運算44426.2.1 指針與整數的運算44426.2.2 指針與指針的運算44526.3 運算符&和*44626.4 指針表達式44726.5 綜合應用—使用指針進行排序44826.6 高手點撥44926.7 實戰練習450第27章 指針與數組27.1 數組指針45227.2 數組指針作為函數參數45227.3 指針與字符數組45327.4 指針數組與指針的指針45427.5 綜合應用—報數遊戲45627.6 高手點撥45727.7 實戰練習457第28章 指針與函數28.1 函數指針46028.1.1 函數指針的定義46028.1.2 函數指針的賦值46128.1.3 通過函數指針調用函數46128.2 指針函數46228.3 指向函數的指針作為函數參數46328.4 綜合應用—日期的輸出46528.5 高手點撥46628.6 實戰練習466第29章 指針與字符串29.1 字符串指針46829.1.1 創建字符串46829.1.2 處理字符串46929.1.3 輸出字符串47229.2 字符串指針作為函數參數47229.3 字符指針變量與字符數組的區別47429.4 綜合應用—“回文”問題47429.5 實戰練習476第30章 指針與結構體30.1 結構體指針47830.1.1 定義結構體指針47830.1.2 初始化結構體指針47830.1.3 使用指針訪問成員47830.1.4 給結構體指針賦值47930.2 指向結構體變量的指針48030.3 指向結構體數組的指針48130.4 綜合應用—創建簡單鏈表48230.5 高手點撥48430.6 實戰練習484第31章 指針的高級應用與技巧31.1 指向指針的指針48631.2 void操作48731.3 內存操作48931.4 指針的傳遞49131.5 綜合應用—數值的降序排列49231.6 高手點撥49331.7 實戰練習494第32章 K-均值聚類算法32.1 問題描述49732.2 問題分析及實現49732.2.1 問題分析49732.2.2 問題實現49732.2.3 程序運行49932.3 開發過程常見問題及解決500第33章 哥德巴赫猜想33.1 問題描述50233.2 問題分析及實現50233.2.1 問題分析50233.2.2 問題實現50233.2.3 程序運行50433.3 開發過程常見問題及解決504第34章 猴子選大王遊戲34.1 問題描述50634.2 問題分析及實現50634.2.1 問題分析50634.2.2 問題實現50634.2.3 程序運行50734.3 開發過程常見問題及解決508第35章 迷宮求解35.1 問題描述51035.2 問題分析及實現51035.2.1 問題分析51035.2.2 問題實現51035.2.3 程序運行51335.3 開發過程常見問題及解決514第36章 背包問題求解36.1 問題描述51636.2 問題分析及實現51636.2.1 問題分析51636.2.2 問題實現51636.2.3 程序運行51836.3 開發過程常見問題及解決518第37章 火車車廂重排37.1 問題描述52037.2 問題分析及實現52037.2.1 問題分析52037.2.2 問題實現52037.2.3 程序運行52237.3 開發過程常見問題及解決522第38章 哈夫曼編碼的實現38.1 問題描述52438.2 問題分析及實現52438.2.1 問題分析52438.2.2 問題實現52438.2.3 程序運行52638.3 開發過程常見問題及解決526第39章 八皇後問題的實現39.1 問題描述52839.2 問題分析及實現52839.2.1 問題分析52839.2.2 問題實現52839.2.3 程序運行53039.3 開發過程常見問題及解決530第40章 商人過河遊戲40.1 問題描述53240.2 問題分析及實現53240.2.1 問題分析53240.2.2 問題實現53240.2.3 程序運行53540.3 開發過程常見問題及解決536第41章 K階斐波那契序列的實現41.1 問題描述53841.2 問題分析及實現53841.2.1 問題分析53841.2.2 問題實現53841.2.3 程序運行53941.3 開發過程常見問題及解決540第42章 最短路徑的實現42.1 問題描述54242.2 問題分析及實現54242.2.1 問題分析54242.2.2 問題實現54242.2.3 程序運行54342.3 開發過程常見問題及解決544
內容簡介
《C語言從入門到精通(精粹版)》以零基礎講解為宗旨,用實例引導讀者學習,深入淺出地介紹了C語言的相關知識和實戰技能。《C語言從入門到精通(精粹版)》第Ⅰ篇【基礎知識】主要講解C語言的基礎知識、C程序的組成、字符集、標識符和關鍵字、變量、數制、數據類型、運算符和表達式、順序結構與選擇結構、循環結構與轉向語句、輸入和輸出、數組以及字符數組等;第Ⅱ篇【算法應用】主要講解算法與流程圖、基礎算法、C世界中的不錯算法、數學在程序設計中的應用、算法設計的常用思路以及算法競賽實例等;第Ⅲ篇【核心技術】主要介紹函數、函數中的變量、文件、庫函數、位運算、結構體和聯合體以及數據結構等;第Ⅳ篇【不錯應用】主要介紹指針、指針與數組、指針與函數、指針與字符串、指針與結構體以及指針的不錯應用與技巧等;第Ⅴ篇【趣味題解】主要介紹K-均值聚類算法、哥德巴赫猜想、猴子選大王遊戲、迷宮求解、背包問題求解、火車車廂重排、哈夫曼編......