商品簡介
目次
相關商品
商品簡介
本書主要內容包括數據的存儲和獲取、屏幕的輸入與輸出、運算符、表達式、分支語句、循環語句、函數、數組、指針、字符串處理、結構體、共用體、枚舉、位運算、文件處理、作用域、預處理、數據結構等知識點。最后一章通過一些常見的C語言面試題的解析,為讀者踏入職場提供參考資料。
目次
前言
第一篇 C語言基礎
第1章 踏上征程前的思想動員
1.1 為什么選擇C語言
1.2 如何學好C語言
1.3 語言概述
1.3.1 什么是語言
1.3.2 什么是機器語言
1.3.3 什么是匯編語言
1.3.4 面向過程的語言
1.3.5 什么是C語言
1.4 程序的開發周期
1.4.1 編輯C源代碼 前言
第一篇 C語言基礎
第1章 踏上征程前的思想動員
1.1 為什么選擇C語言
1.2 如何學好C語言
1.3 語言概述
1.3.1 什么是語言
1.3.2 什么是機器語言
1.3.3 什么是匯編語言
1.3.4 面向過程的語言
1.3.5 什么是C語言
1.4 程序的開發周期
1.4.1 編輯C源代碼
1.4.2 編譯C源代碼
1.4.3 連接目標文件
1.4.4 編譯連接過程示例
1.4.5 運行程序
1.5 VC++、C++、C和TC的區別
1.6 小結
1.7 習題
第2章 跟我寫Hello World
2.1 了解需求才能創建程序
2.2 認識LCC-Win32開發環境
2.2.1 為什么選擇LCC-Win32
2.2.2 啟動LCC-Win32
2.2.3 新建Hello World工程
2.2.4 定義新工程
2.2.5 添加源代碼到工程
2.2.6 編譯器設置
2.2.7 連接器設置
2.2.8 調試器設置
2.2.9 開始編輯代碼
2.3 編譯運行
2.4 調試排錯(debug)
2.4.1 debug的由來
2.4.2 設置斷點
2.4.3 調試運行
2.5 第一個程序容易出現的錯誤
2.5.1 包含命令include
2.5.2 關鍵字main
2.5.3 表示代碼行結束的分號
2.6 小結
2.7 習題
第3章 分解Hello World——最簡單C程序的組成
3.1 C程序的構成
3.2 C程序的注釋
3.3 C程序必須有的main函數
3.4 調用函數在屏幕上顯示文字
3.5 #include預處理器指示符
3.5.1 函數聲明及其作用
3.5.2 試驗尋找#include的作用
3.5.3 #include的作用
3.6 計算1+1的程序實例
3.7 數據從哪里來,又到哪里去——變量
3.7.1 變量在內存中的表現形式
3.7.2 編譯器使用變量符號表
3.7.3 變量及其使用
3.8 自己設計C函數
3.8.1 在main函數中計算3個整數的平均數
3.8.2 在main函數中分3次計算3個整數的平均數
3.8.3 自編函數實現計算3個整數的平均數
3.8.4 如何自編寫函數
3.8.5 試驗觀察總結函數聲明和函數定義的意義
3.9 語句構成程序
3.10 優秀程序員的代碼風格
3.11 小結
3.12 習題
第4章 常量、變量及數據類型
4.1 計算機是如何表示數據的
4.1.1 二進制、八進制、十六進制
4.1.2 表示數據的字節和位
4.1.3 內存是存儲數據的房間
4.2 數據類型
4.2.1 整數類型
4.2.2 整數的有符號和無符號
4.2.3 實數類型
4.2.4 字符類型
4.2.5 數據類型總結
4.3 常量
4.3.1 直接常量和符號常量
4.3.2 符號常量的優點
4.3.3 直接常量的書寫格式
4.3.4 轉義字符
4.3.5 字符串
4.4 變量
4.4.1 變量的聲明
4.4.2 變量聲明的意義
4.4.3 標識符和關鍵字
4.4.4 變量在內存中占據的空間和變量的值
4.4.5 為變量賦初值
4.4.6 變量使用時常見的錯誤
4.5 幾個與變量相關的經典算法
4.5.1 累加和累乘
4.5.2 交換兩個變量的值
4.6 小結
4.7 習題
第5章 用屏幕和鍵盤交互——簡單的輸出和輸入
5.1 輸入—處理—輸出:這就是程序
5.2 向屏幕輸出——printf()函數詳解
5.2.1 printf()函數的一般形式
5.2.2 printf()函數的輸出原理
5.2.3 格式控制字符串的一般形式
5.2.4 輸出帶符號的整數%d
5.2.5 設置最小寬度的輸出
5.2.6 長整型輸出%ld
5.2.7 輸出八進制形式
5.2.8 輸出十六進制的形式
5.2.9 輸出十進制的unsigned型數據
5.2.10 輸出字符
5.2.11 輸出字符串%s
5.2.12 輸出實型數據%f
5.2.13 輸出指數形式的實數
5.2.14 自動選擇%f或者%e形式輸出%g
5.2.15 printf()函數的幾點說明
5.3 字符輸出putchar()和字符串輸出puts()
5.3.1 字符輸出函數
5.3.2 字符串輸出函數
5.4 接收鍵盤輸入——scanf()函數詳解
5.4.1 scanf()函數的一般形式
5.4.2 scanf()函數的輸入原理
5.4.3 多數據輸入分隔規則
5.4.4 控制輸入的格式字符
5.4.5 scanf()函數的使用說明
5.4.6 使用scanf()函數的注意事項
5.5 字符輸入函數getchar()
5.6 輸入和輸出程序舉例
5.7 小結
5.8 習題
第6章 程序的基本構成——運算符和表達式
6.1 認識C中的運算符和表達式
6.1.1 運算符和表達式
6.1.2 操作數、運算符和表達式
6.1.3 C運算符簡介
6.2 算術運算符和算術表達式
6.2.1 基本的算術運算符
6.2.2 ++自增、--自減運算符
6.2.3 算術表達式和運算符的優先級及結合性
6.3 逗號運算符和逗號表達式
6.3.1 逗號表達式的一般形式
6.3.2 逗號表達式的優先級和結合性
6.4 關系運算符和關系表達式
6.4.1 關系運算符的種類
6.4.2 關系表達式的一般形式
6.5 邏輯運算符和邏輯表達式
6.5.1 邏輯運算符
6.5.2 邏輯真值表
6.6 賦值運算符和賦值表達式
6.6.1 賦值表達式
6.6.2 復合運算符
6.7 強制類型轉換和自動類型轉換
6.7.1 強制類型轉換
6.7.2 自動類型轉換
6.8 運算符的優先級
6.8.1 優先級、結合性匯總
6.8.2 sizeof運算
6.9 取地址運算符
6.10 小結
6.11 習題
第7章 程序的最小獨立單元——語句
7.1 5種語句類型
7.1.1 表達式語句
7.1.2 函數調用語句
7.1.3 空語句
7.1.4 復合語句(塊語句)
7.1.5 流程控制語句
7.2 結構化程序設計
7.2.1 什么是算法
7.2.2 算法的表示
7.2.3 算法的偽代碼表示
7.2.4 算法的流程圖表示
7.2.5 3種控制結構
7.2.6 算法示例
7.3 小結
7.4 習題
第8章 條件判斷——分支結構
8.1 if語句
8.1.1 判斷表達式
8.1.2 花括號和if結構體
8.2 if...else結構
8.2.1 關鍵在else
8.2.2 if...else結構體
8.3 多分支語句和分支語句嵌套
8.3.1 多分支
8.3.2 多分支if結構
8.3.3 分支語句嵌套
8.4 switch結構
8.4.1 一般形式
8.4.2 為什么叫開關語句
8.4.3 default語句
8.4.4 if結構和switch結構之比較
8.4.5 switch結構的常見錯誤與解決方法
8.5 小結
8.6 習題
第9章 一遍又一遍——循環結構
9.1 構造循環
9.1.1 循環的條件
9.1.2 當型循環和直到型循環
9.2 while和do...while循環結構
9.2.1 語法規則
9.2.2 代碼塊
9.2.3 while語句的常見錯誤
9.2.4 do...while語句的常見錯誤
9.3 for循環結構
9.3.1 基本形式
9.3.2 表達式省略
9.3.3 循環終止和步長
9.3.4 for語句的常見錯誤
9.4 循環嵌套
9.4.1 嵌套示例
9.4.2 嵌套的效率
9.4.3 循環嵌套程序的常見錯誤
9.5 與循環密切相關的流程轉向控制語句
9.5.1 用break跳出循環
9.5.2 用continue重來一次
9.5.3 用goto實現跳轉
9.6 小結
9.7 習題
第二篇 一窺C語言門庭
第10章 同一類型多個元素的集合——簡單數組
10.1 什么是數組
10.1.1 數組是一大片連續內存空間
10.1.2 數組元素的訪問
10.2 一維數組
10.2.1 一維數組的聲明
10.2.2 一維數組元素的訪問
10.2.3 一維數組的初始化
10.2.4 不合法的數組操作
10.3 二維數組
10.3.1 二維數組的聲明
10.3.2 二維數組的初始化
10.3.3 二維數組應用舉例
10.4 更高維的數組
10.4.1 高維數組的聲明和元素訪問
10.4.2 初始化
10.4.3 多維數組在內存中是如何排列元素的
10.5 小結
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 函數返回
11.4 告訴編譯器有這么一個函數
11.4.1 函數聲明的語法
11.4.2 聲明不同于定義
11.4.3 標準庫函數的聲明
11.5 函數的調用過程
11.6 小結
11.7 習題
第12章 C語言難點——指針初探
12.1 計算機中的內存
12.1.1 內存地址
12.1.2 內存中保存的內容
12.1.3 地址就是指針
12.2 指針的定義
12.2.1 指針變量的聲明
12.2.2 指針變量的初始化
12.2.3 指針變量的值
12.2.4 取地址操作符&
12.2.5 指針變量占據一定的內存空間
12.2.6 指向指針的指針
12.2.7 指針變量常見的錯誤分析與解決
12.3 使用指針
12.3.1 運算符*
12.3.2 指針的類型和指針所指向的類型
12.3.3 同類型指針的賦值
12.3.4 void指針
12.3.5 指針的類型和指針所指向的類型不同
12.4 指針的運算
12.4.1 算術運算之“指針+整數”或“指針-整數”
12.4.2 指針-指針
12.4.3 指針的大小比較
12.5 指針表達式與左值
12.5.1 指針與整型
12.5.2 指針與左值
12.5.3 指針與const
12.6 動態內存分配
12.6.1 動態分配的好處
12.6.2 malloc與free函數
12.6.3 calloc與free
12.6.4 free函數與指針
12.6.5 內存泄漏
12.6.6 釋放已經釋放了的內存會出問題
12.7 小結
12.8 習題
第13章 字符串及字符串操作
13.1 C風格字符串
13.1.1 C風格字符串的聲明
13.1.2 C風格字符串在內存中的表示
13.2 字符數組的輸入輸出
13.2.1 字符數組的聲明
13.2.2 字符數組可以進行整體輸入輸出
13.2.3 使用gets()函數讀取整行
13.2.4 訪問字符數組中某個元素
13.2.5 使用puts()函數實現字符串的輸出
13.2.6 使用字符數組的常見問題
13.3 字符串處理函數
13.3.1 理解:數組名是常指針
13.3.2 strlen()函數與size_t
13.3.3 字符串復制函數strcpy()
13.3.4 字符串比較函數strcmp()
13.3.5 字符串連接函數strcat()
13.3.6 全轉換為大寫形式
13.3.7 鏈式操作
13.4 小結
13.5 習題
第14章 結構體、共用體、枚舉和typedef
14.1 結構體
14.1.1 結構體的定義
14.1.2 聲明結構體變量
14.1.3 初始化結構變量
14.1.4 訪問結構體成員
14.1.5 結構體定義的位置
14.1.6 結構體變量賦值
14.2 特殊結構體
14.2.1 結構體嵌套
14.2.2 匿名結構體
14.3 共用體
14.3.1 什么是共用體
14.3.2 共用體的定義
14.3.3 聲明共用體變量
14.3.4 共用體變量的初始化
14.3.5 共用體成員訪問
14.3.6 共用體賦值
14.4 結構體和共用體的內存差異
14.4.1 結構體變量和共用體變量內存形式的不同
14.4.2 結構體變量的內存大小
14.4.3 字節對齊
14.4.4 最寬基本類型
14.4.5 共用體的大小
14.5 枚舉類型
14.5.1 什么是枚舉類型
14.5.2 枚舉類型的定義
14.5.3 聲明枚舉變量
14.5.4 枚舉常量是什么
14.5.5 使用枚舉時常見的錯誤
14.6 給類型取個別名——typedef
14.6.1 typedef基本用法
14.6.2 #define用法
14.7 小結
14.8 習題
第15章 如何節省內存——位運算
15.1 什么是位運算
15.1.1 開燈關燈
15.1.2 改變狀態
15.1.3 計算機中的數據存儲形式
15.2 位邏輯運算符
15.2.1 位取反操作
15.2.2 位與運算
15.2.3 位或運算
15.2.4 位異或
15.2.5 實例分析
15.3 移位運算
15.3.1 基本形式
15.3.2 移位舉例
15.3.3 移位和乘以2
15.4 小結
15.5 習題
第三篇 C語言進階主題
第16章 存儲不僅僅局限于內存——文件
16.1 什么是文件
16.1.1 文件
16.1.2 流
16.1.3 重定向
16.1.4 文件的處理形式——緩沖區和非緩沖區
16.1.5 文件的存儲形式——文本形式和二進制形式
16.2 C語言如何使用文件
16.2.1 文件型指針
16.2.2 文件操作的步驟
16.3 文件的打開與關閉
16.3.1 用于打開文件的fopen()函數
16.3.2 打開是否成功
16.3.3 用于關閉文件的fclose()函數
16.4 文件的讀寫
16.4.1 讀寫的相對參照
16.4.2 如何判斷文件已經結束
16.4.3 字符讀寫函數fgetc()和fputc()
16.4.4 字符串讀寫函數fgets()和fputs()
16.4.5 塊讀寫函數fread()和fwrite()
16.4.6 格式化文件輸入輸出fprintf()與fscanf()
16.5 文件的定位
16.5.1 移動指針到文件開頭rewind()
16.5.2 移動指針到當前位置ftell()
16.5.3 移動指針fseek()
16.6 小結
16.7 習題
第17章 靈活卻難以理解——指針進階
17.1 指針與數組
17.1.1 數組名指針
17.1.2 使用數組名常指針表示數組元素
17.1.3 指向數組元素的指針變量
17.1.4 指向數組的指針變量
17.1.5 指針數組
17.1.6 指針與數組的常見問題
17.2 指針、結構體和結構體數組
17.2.1 兩種訪問形式
17.2.2 聲明創建一個結構數組
17.2.3 結構數組的初始化
17.2.4 結構數組的使用
17.2.5 指向結構數組的指針
17.3 函數指針
17.3.1 函數名指針
17.3.2 指向函數的指針
17.3.3 函數指針類型
17.3.4 函數指針作函數參數
17.3.5 函數指針數組
17.3.6 指向函數指針的指針
17.4 小結
17.5 習題
第18章 更深入的理解——函數進階
18.1 參數傳遞的副本機制
18.1.1 傳值調用的副本
18.1.2 傳址調用的副本機制
18.2 函數返回值的副本機制
18.2.1 return局部變量為什么合法
18.2.2 返回指針申請動態內存
18.2.3 不要返回指向棧內存的指針
18.2.4 返回指向只讀存儲區的指針
18.3 函數與結構體
18.3.1 結構體變量的傳值和傳址調用
18.3.2 結構體變量的成員作為函數參數
18.3.3 返回結構體的函數
18.3.4 返回結構體指針的函數
18.4 函數與數組
18.4.1 數組元素作為函數參數
18.4.2 數組名作為函數參數
18.4.3 多維數組名作為函數參數
18.4.4 數組名作函數參數時的退化
18.5 遞歸
18.5.1 遞歸流程
18.5.2 遞歸兩要素
18.5.3 效率VS可讀性
18.6 帶參數的主函數
18.7 小結
18.8 習題
第19章 生存期、作用域與可見域
19.1 內存分配
19.1.1 內存分區
19.1.2 變量的存儲類別
19.1.3 生存期
19.1.4 作用域與可見域
19.2 auto變量
19.2.1 定義格式
19.2.2 作用域和生存期
19.2.3 auto變量的屏蔽準則
19.2.4 重復定義
19.2.5 auto變量的初始化和特點
19.3 register變量
19.3.1 定義格式
19.3.2 使用舉例
19.4 extern變量
19.4.1 全局變量定義
19.4.2 全局變量聲明
19.4.3 可見域
19.4.4 全局變量的屏蔽準則
19.4.5 全局變量的利與弊
19.5 static變量
19.5.1 定義格式
19.5.2 靜態局部變量
19.5.3 靜態全局變量
19.5.4 靜態局部變量和靜態全局變量的區別
19.5.5 extern變量和static變量的初始化
19.6 函數的作用域與可見域
19.6.1 內部函數
19.6.2 外部函數
19.7 結構體定義的作用域與可見域
19.7.1 定義位置與可見域
19.7.2 允許重復定義
19.8 常見的有關變量存儲的錯誤
19.9 小結
19.10 習題
第20章 編譯及預處理
20.1 編譯流程
20.1.1 編輯
20.1.2 預處理
20.1.3 編譯
20.1.4 連接
20.2 程序錯誤
20.2.1 錯誤分類
20.2.2 編譯錯誤
20.2.3 連接錯誤
20.2.4 邏輯錯誤
20.2.5 排錯
20.3 預處理命令之宏定義
20.3.1 宏定義
20.3.2 不帶參數的宏定義
20.3.3 帶參數的宏定義
20.3.4 #define定義常量與const常量
20.3.5 文件包含
20.3.6 條件編譯
20.3.7 宏函數
20.4 小結
20.5 習題
第21章 數據結構
21.1 鏈表
21.1.1 鏈表的結構
21.1.2 創建鏈表并遍歷輸出
21.1.3 鏈表的插入
21.1.4 鏈表結點的刪除
21.1.5 鏈表的逆置
21.1.6 鏈表的銷毀
21.1.7 鏈表的綜合實例
21.1.8 循環鏈表
21.1.9 雙鏈表
21.2 棧和隊列
21.2.1 棧的定義
21.2.2 棧的分類
21.2.3 棧的操作
21.2.4 函數與棧
21.2.5 隊列
21.3 自定義類型
21.4 小結
21.5 習題
第四篇 C語言程序設計實例與面試題解析
第22章 C語言程序課程設計:游戲
22.1 黑白棋
22.1.1 程序功能要求
22.1.2 輸入輸出樣例
22.1.3 程序分析
22.1.4 程序初始化
22.1.5 初始化圖形設備
22.1.6 繪制棋盤
22.1.7 交替繪制黑白棋
22.1.8 游戲(同時判斷是否有一方勝利)
22.1.9 小結
22.2 五子棋
22.2.1 程序功能要求
22.2.2 輸入輸出樣例
22.2.3 程序分析
22.2.4 主函數程序設計
22.2.5 系統初始化
22.2.6 移動棋子模塊
22.2.7 程序勝負判定
22.2.8 小結
22.3 掃雷游戲
22.3.1 程序功能要求
22.3.2 輸入輸出樣例
22.3.3 程序分析
22.3.4 程序設計
22.3.5 初始化圖形設備
22.3.6 事件處理模塊
22.3.7 游戲處理部分
22.3.8 小結
22.4 速算24
22.4.1 程序功能要求
22.4.2 輸入輸出樣例
22.4.3 程序分析
22.4.4 程序設計
22.4.5 撲克牌處理部分
22.4.6 程序運算部分
22.4.7 小結
第23章 面試題解析
23.1 基礎知識
23.1.1 指針自增自減有什么不同
23.1.2 什么是遞歸
23.1.3 宏定義與操作符的區別
23.1.4 引用與值傳遞的區別
23.1.5 指針和引用有什么區別
23.1.6 什么是棧
23.1.7 main函數執行前還會執行什么代碼
23.1.8 static有什么用途
23.1.9 定義int **a[3][4], 則變量占用的內存空間為多少
23.1.10 什么是預編譯
23.1.11 int (*s[10])(int)表示什么意義
23.1.12 結構體與共同體有何區別
23.2 算法和思維邏輯知識
23.2.1 100美元哪里去了
23.2.2 將16升水平均分給四個人
23.2.3 算出小王買了幾瓶啤酒、幾瓶飲料
23.2.4 找出不同的蘋果
23.2.5 找出不同的球
23.2.6 猜自己的帽子顏色
23.2.7 3筐水果各是什么
23.2.8 最后剩下的是誰
23.2.9 聰明的商人
23.2.10 紅球和白球
23.2.11 烏龜賽跑
23.2.12 投硬幣
附錄 ASCII編碼表
第一篇 C語言基礎
第1章 踏上征程前的思想動員
1.1 為什么選擇C語言
1.2 如何學好C語言
1.3 語言概述
1.3.1 什么是語言
1.3.2 什么是機器語言
1.3.3 什么是匯編語言
1.3.4 面向過程的語言
1.3.5 什么是C語言
1.4 程序的開發周期
1.4.1 編輯C源代碼 前言
第一篇 C語言基礎
第1章 踏上征程前的思想動員
1.1 為什么選擇C語言
1.2 如何學好C語言
1.3 語言概述
1.3.1 什么是語言
1.3.2 什么是機器語言
1.3.3 什么是匯編語言
1.3.4 面向過程的語言
1.3.5 什么是C語言
1.4 程序的開發周期
1.4.1 編輯C源代碼
1.4.2 編譯C源代碼
1.4.3 連接目標文件
1.4.4 編譯連接過程示例
1.4.5 運行程序
1.5 VC++、C++、C和TC的區別
1.6 小結
1.7 習題
第2章 跟我寫Hello World
2.1 了解需求才能創建程序
2.2 認識LCC-Win32開發環境
2.2.1 為什么選擇LCC-Win32
2.2.2 啟動LCC-Win32
2.2.3 新建Hello World工程
2.2.4 定義新工程
2.2.5 添加源代碼到工程
2.2.6 編譯器設置
2.2.7 連接器設置
2.2.8 調試器設置
2.2.9 開始編輯代碼
2.3 編譯運行
2.4 調試排錯(debug)
2.4.1 debug的由來
2.4.2 設置斷點
2.4.3 調試運行
2.5 第一個程序容易出現的錯誤
2.5.1 包含命令include
2.5.2 關鍵字main
2.5.3 表示代碼行結束的分號
2.6 小結
2.7 習題
第3章 分解Hello World——最簡單C程序的組成
3.1 C程序的構成
3.2 C程序的注釋
3.3 C程序必須有的main函數
3.4 調用函數在屏幕上顯示文字
3.5 #include預處理器指示符
3.5.1 函數聲明及其作用
3.5.2 試驗尋找#include的作用
3.5.3 #include的作用
3.6 計算1+1的程序實例
3.7 數據從哪里來,又到哪里去——變量
3.7.1 變量在內存中的表現形式
3.7.2 編譯器使用變量符號表
3.7.3 變量及其使用
3.8 自己設計C函數
3.8.1 在main函數中計算3個整數的平均數
3.8.2 在main函數中分3次計算3個整數的平均數
3.8.3 自編函數實現計算3個整數的平均數
3.8.4 如何自編寫函數
3.8.5 試驗觀察總結函數聲明和函數定義的意義
3.9 語句構成程序
3.10 優秀程序員的代碼風格
3.11 小結
3.12 習題
第4章 常量、變量及數據類型
4.1 計算機是如何表示數據的
4.1.1 二進制、八進制、十六進制
4.1.2 表示數據的字節和位
4.1.3 內存是存儲數據的房間
4.2 數據類型
4.2.1 整數類型
4.2.2 整數的有符號和無符號
4.2.3 實數類型
4.2.4 字符類型
4.2.5 數據類型總結
4.3 常量
4.3.1 直接常量和符號常量
4.3.2 符號常量的優點
4.3.3 直接常量的書寫格式
4.3.4 轉義字符
4.3.5 字符串
4.4 變量
4.4.1 變量的聲明
4.4.2 變量聲明的意義
4.4.3 標識符和關鍵字
4.4.4 變量在內存中占據的空間和變量的值
4.4.5 為變量賦初值
4.4.6 變量使用時常見的錯誤
4.5 幾個與變量相關的經典算法
4.5.1 累加和累乘
4.5.2 交換兩個變量的值
4.6 小結
4.7 習題
第5章 用屏幕和鍵盤交互——簡單的輸出和輸入
5.1 輸入—處理—輸出:這就是程序
5.2 向屏幕輸出——printf()函數詳解
5.2.1 printf()函數的一般形式
5.2.2 printf()函數的輸出原理
5.2.3 格式控制字符串的一般形式
5.2.4 輸出帶符號的整數%d
5.2.5 設置最小寬度的輸出
5.2.6 長整型輸出%ld
5.2.7 輸出八進制形式
5.2.8 輸出十六進制的形式
5.2.9 輸出十進制的unsigned型數據
5.2.10 輸出字符
5.2.11 輸出字符串%s
5.2.12 輸出實型數據%f
5.2.13 輸出指數形式的實數
5.2.14 自動選擇%f或者%e形式輸出%g
5.2.15 printf()函數的幾點說明
5.3 字符輸出putchar()和字符串輸出puts()
5.3.1 字符輸出函數
5.3.2 字符串輸出函數
5.4 接收鍵盤輸入——scanf()函數詳解
5.4.1 scanf()函數的一般形式
5.4.2 scanf()函數的輸入原理
5.4.3 多數據輸入分隔規則
5.4.4 控制輸入的格式字符
5.4.5 scanf()函數的使用說明
5.4.6 使用scanf()函數的注意事項
5.5 字符輸入函數getchar()
5.6 輸入和輸出程序舉例
5.7 小結
5.8 習題
第6章 程序的基本構成——運算符和表達式
6.1 認識C中的運算符和表達式
6.1.1 運算符和表達式
6.1.2 操作數、運算符和表達式
6.1.3 C運算符簡介
6.2 算術運算符和算術表達式
6.2.1 基本的算術運算符
6.2.2 ++自增、--自減運算符
6.2.3 算術表達式和運算符的優先級及結合性
6.3 逗號運算符和逗號表達式
6.3.1 逗號表達式的一般形式
6.3.2 逗號表達式的優先級和結合性
6.4 關系運算符和關系表達式
6.4.1 關系運算符的種類
6.4.2 關系表達式的一般形式
6.5 邏輯運算符和邏輯表達式
6.5.1 邏輯運算符
6.5.2 邏輯真值表
6.6 賦值運算符和賦值表達式
6.6.1 賦值表達式
6.6.2 復合運算符
6.7 強制類型轉換和自動類型轉換
6.7.1 強制類型轉換
6.7.2 自動類型轉換
6.8 運算符的優先級
6.8.1 優先級、結合性匯總
6.8.2 sizeof運算
6.9 取地址運算符
6.10 小結
6.11 習題
第7章 程序的最小獨立單元——語句
7.1 5種語句類型
7.1.1 表達式語句
7.1.2 函數調用語句
7.1.3 空語句
7.1.4 復合語句(塊語句)
7.1.5 流程控制語句
7.2 結構化程序設計
7.2.1 什么是算法
7.2.2 算法的表示
7.2.3 算法的偽代碼表示
7.2.4 算法的流程圖表示
7.2.5 3種控制結構
7.2.6 算法示例
7.3 小結
7.4 習題
第8章 條件判斷——分支結構
8.1 if語句
8.1.1 判斷表達式
8.1.2 花括號和if結構體
8.2 if...else結構
8.2.1 關鍵在else
8.2.2 if...else結構體
8.3 多分支語句和分支語句嵌套
8.3.1 多分支
8.3.2 多分支if結構
8.3.3 分支語句嵌套
8.4 switch結構
8.4.1 一般形式
8.4.2 為什么叫開關語句
8.4.3 default語句
8.4.4 if結構和switch結構之比較
8.4.5 switch結構的常見錯誤與解決方法
8.5 小結
8.6 習題
第9章 一遍又一遍——循環結構
9.1 構造循環
9.1.1 循環的條件
9.1.2 當型循環和直到型循環
9.2 while和do...while循環結構
9.2.1 語法規則
9.2.2 代碼塊
9.2.3 while語句的常見錯誤
9.2.4 do...while語句的常見錯誤
9.3 for循環結構
9.3.1 基本形式
9.3.2 表達式省略
9.3.3 循環終止和步長
9.3.4 for語句的常見錯誤
9.4 循環嵌套
9.4.1 嵌套示例
9.4.2 嵌套的效率
9.4.3 循環嵌套程序的常見錯誤
9.5 與循環密切相關的流程轉向控制語句
9.5.1 用break跳出循環
9.5.2 用continue重來一次
9.5.3 用goto實現跳轉
9.6 小結
9.7 習題
第二篇 一窺C語言門庭
第10章 同一類型多個元素的集合——簡單數組
10.1 什么是數組
10.1.1 數組是一大片連續內存空間
10.1.2 數組元素的訪問
10.2 一維數組
10.2.1 一維數組的聲明
10.2.2 一維數組元素的訪問
10.2.3 一維數組的初始化
10.2.4 不合法的數組操作
10.3 二維數組
10.3.1 二維數組的聲明
10.3.2 二維數組的初始化
10.3.3 二維數組應用舉例
10.4 更高維的數組
10.4.1 高維數組的聲明和元素訪問
10.4.2 初始化
10.4.3 多維數組在內存中是如何排列元素的
10.5 小結
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 函數返回
11.4 告訴編譯器有這么一個函數
11.4.1 函數聲明的語法
11.4.2 聲明不同于定義
11.4.3 標準庫函數的聲明
11.5 函數的調用過程
11.6 小結
11.7 習題
第12章 C語言難點——指針初探
12.1 計算機中的內存
12.1.1 內存地址
12.1.2 內存中保存的內容
12.1.3 地址就是指針
12.2 指針的定義
12.2.1 指針變量的聲明
12.2.2 指針變量的初始化
12.2.3 指針變量的值
12.2.4 取地址操作符&
12.2.5 指針變量占據一定的內存空間
12.2.6 指向指針的指針
12.2.7 指針變量常見的錯誤分析與解決
12.3 使用指針
12.3.1 運算符*
12.3.2 指針的類型和指針所指向的類型
12.3.3 同類型指針的賦值
12.3.4 void指針
12.3.5 指針的類型和指針所指向的類型不同
12.4 指針的運算
12.4.1 算術運算之“指針+整數”或“指針-整數”
12.4.2 指針-指針
12.4.3 指針的大小比較
12.5 指針表達式與左值
12.5.1 指針與整型
12.5.2 指針與左值
12.5.3 指針與const
12.6 動態內存分配
12.6.1 動態分配的好處
12.6.2 malloc與free函數
12.6.3 calloc與free
12.6.4 free函數與指針
12.6.5 內存泄漏
12.6.6 釋放已經釋放了的內存會出問題
12.7 小結
12.8 習題
第13章 字符串及字符串操作
13.1 C風格字符串
13.1.1 C風格字符串的聲明
13.1.2 C風格字符串在內存中的表示
13.2 字符數組的輸入輸出
13.2.1 字符數組的聲明
13.2.2 字符數組可以進行整體輸入輸出
13.2.3 使用gets()函數讀取整行
13.2.4 訪問字符數組中某個元素
13.2.5 使用puts()函數實現字符串的輸出
13.2.6 使用字符數組的常見問題
13.3 字符串處理函數
13.3.1 理解:數組名是常指針
13.3.2 strlen()函數與size_t
13.3.3 字符串復制函數strcpy()
13.3.4 字符串比較函數strcmp()
13.3.5 字符串連接函數strcat()
13.3.6 全轉換為大寫形式
13.3.7 鏈式操作
13.4 小結
13.5 習題
第14章 結構體、共用體、枚舉和typedef
14.1 結構體
14.1.1 結構體的定義
14.1.2 聲明結構體變量
14.1.3 初始化結構變量
14.1.4 訪問結構體成員
14.1.5 結構體定義的位置
14.1.6 結構體變量賦值
14.2 特殊結構體
14.2.1 結構體嵌套
14.2.2 匿名結構體
14.3 共用體
14.3.1 什么是共用體
14.3.2 共用體的定義
14.3.3 聲明共用體變量
14.3.4 共用體變量的初始化
14.3.5 共用體成員訪問
14.3.6 共用體賦值
14.4 結構體和共用體的內存差異
14.4.1 結構體變量和共用體變量內存形式的不同
14.4.2 結構體變量的內存大小
14.4.3 字節對齊
14.4.4 最寬基本類型
14.4.5 共用體的大小
14.5 枚舉類型
14.5.1 什么是枚舉類型
14.5.2 枚舉類型的定義
14.5.3 聲明枚舉變量
14.5.4 枚舉常量是什么
14.5.5 使用枚舉時常見的錯誤
14.6 給類型取個別名——typedef
14.6.1 typedef基本用法
14.6.2 #define用法
14.7 小結
14.8 習題
第15章 如何節省內存——位運算
15.1 什么是位運算
15.1.1 開燈關燈
15.1.2 改變狀態
15.1.3 計算機中的數據存儲形式
15.2 位邏輯運算符
15.2.1 位取反操作
15.2.2 位與運算
15.2.3 位或運算
15.2.4 位異或
15.2.5 實例分析
15.3 移位運算
15.3.1 基本形式
15.3.2 移位舉例
15.3.3 移位和乘以2
15.4 小結
15.5 習題
第三篇 C語言進階主題
第16章 存儲不僅僅局限于內存——文件
16.1 什么是文件
16.1.1 文件
16.1.2 流
16.1.3 重定向
16.1.4 文件的處理形式——緩沖區和非緩沖區
16.1.5 文件的存儲形式——文本形式和二進制形式
16.2 C語言如何使用文件
16.2.1 文件型指針
16.2.2 文件操作的步驟
16.3 文件的打開與關閉
16.3.1 用于打開文件的fopen()函數
16.3.2 打開是否成功
16.3.3 用于關閉文件的fclose()函數
16.4 文件的讀寫
16.4.1 讀寫的相對參照
16.4.2 如何判斷文件已經結束
16.4.3 字符讀寫函數fgetc()和fputc()
16.4.4 字符串讀寫函數fgets()和fputs()
16.4.5 塊讀寫函數fread()和fwrite()
16.4.6 格式化文件輸入輸出fprintf()與fscanf()
16.5 文件的定位
16.5.1 移動指針到文件開頭rewind()
16.5.2 移動指針到當前位置ftell()
16.5.3 移動指針fseek()
16.6 小結
16.7 習題
第17章 靈活卻難以理解——指針進階
17.1 指針與數組
17.1.1 數組名指針
17.1.2 使用數組名常指針表示數組元素
17.1.3 指向數組元素的指針變量
17.1.4 指向數組的指針變量
17.1.5 指針數組
17.1.6 指針與數組的常見問題
17.2 指針、結構體和結構體數組
17.2.1 兩種訪問形式
17.2.2 聲明創建一個結構數組
17.2.3 結構數組的初始化
17.2.4 結構數組的使用
17.2.5 指向結構數組的指針
17.3 函數指針
17.3.1 函數名指針
17.3.2 指向函數的指針
17.3.3 函數指針類型
17.3.4 函數指針作函數參數
17.3.5 函數指針數組
17.3.6 指向函數指針的指針
17.4 小結
17.5 習題
第18章 更深入的理解——函數進階
18.1 參數傳遞的副本機制
18.1.1 傳值調用的副本
18.1.2 傳址調用的副本機制
18.2 函數返回值的副本機制
18.2.1 return局部變量為什么合法
18.2.2 返回指針申請動態內存
18.2.3 不要返回指向棧內存的指針
18.2.4 返回指向只讀存儲區的指針
18.3 函數與結構體
18.3.1 結構體變量的傳值和傳址調用
18.3.2 結構體變量的成員作為函數參數
18.3.3 返回結構體的函數
18.3.4 返回結構體指針的函數
18.4 函數與數組
18.4.1 數組元素作為函數參數
18.4.2 數組名作為函數參數
18.4.3 多維數組名作為函數參數
18.4.4 數組名作函數參數時的退化
18.5 遞歸
18.5.1 遞歸流程
18.5.2 遞歸兩要素
18.5.3 效率VS可讀性
18.6 帶參數的主函數
18.7 小結
18.8 習題
第19章 生存期、作用域與可見域
19.1 內存分配
19.1.1 內存分區
19.1.2 變量的存儲類別
19.1.3 生存期
19.1.4 作用域與可見域
19.2 auto變量
19.2.1 定義格式
19.2.2 作用域和生存期
19.2.3 auto變量的屏蔽準則
19.2.4 重復定義
19.2.5 auto變量的初始化和特點
19.3 register變量
19.3.1 定義格式
19.3.2 使用舉例
19.4 extern變量
19.4.1 全局變量定義
19.4.2 全局變量聲明
19.4.3 可見域
19.4.4 全局變量的屏蔽準則
19.4.5 全局變量的利與弊
19.5 static變量
19.5.1 定義格式
19.5.2 靜態局部變量
19.5.3 靜態全局變量
19.5.4 靜態局部變量和靜態全局變量的區別
19.5.5 extern變量和static變量的初始化
19.6 函數的作用域與可見域
19.6.1 內部函數
19.6.2 外部函數
19.7 結構體定義的作用域與可見域
19.7.1 定義位置與可見域
19.7.2 允許重復定義
19.8 常見的有關變量存儲的錯誤
19.9 小結
19.10 習題
第20章 編譯及預處理
20.1 編譯流程
20.1.1 編輯
20.1.2 預處理
20.1.3 編譯
20.1.4 連接
20.2 程序錯誤
20.2.1 錯誤分類
20.2.2 編譯錯誤
20.2.3 連接錯誤
20.2.4 邏輯錯誤
20.2.5 排錯
20.3 預處理命令之宏定義
20.3.1 宏定義
20.3.2 不帶參數的宏定義
20.3.3 帶參數的宏定義
20.3.4 #define定義常量與const常量
20.3.5 文件包含
20.3.6 條件編譯
20.3.7 宏函數
20.4 小結
20.5 習題
第21章 數據結構
21.1 鏈表
21.1.1 鏈表的結構
21.1.2 創建鏈表并遍歷輸出
21.1.3 鏈表的插入
21.1.4 鏈表結點的刪除
21.1.5 鏈表的逆置
21.1.6 鏈表的銷毀
21.1.7 鏈表的綜合實例
21.1.8 循環鏈表
21.1.9 雙鏈表
21.2 棧和隊列
21.2.1 棧的定義
21.2.2 棧的分類
21.2.3 棧的操作
21.2.4 函數與棧
21.2.5 隊列
21.3 自定義類型
21.4 小結
21.5 習題
第四篇 C語言程序設計實例與面試題解析
第22章 C語言程序課程設計:游戲
22.1 黑白棋
22.1.1 程序功能要求
22.1.2 輸入輸出樣例
22.1.3 程序分析
22.1.4 程序初始化
22.1.5 初始化圖形設備
22.1.6 繪制棋盤
22.1.7 交替繪制黑白棋
22.1.8 游戲(同時判斷是否有一方勝利)
22.1.9 小結
22.2 五子棋
22.2.1 程序功能要求
22.2.2 輸入輸出樣例
22.2.3 程序分析
22.2.4 主函數程序設計
22.2.5 系統初始化
22.2.6 移動棋子模塊
22.2.7 程序勝負判定
22.2.8 小結
22.3 掃雷游戲
22.3.1 程序功能要求
22.3.2 輸入輸出樣例
22.3.3 程序分析
22.3.4 程序設計
22.3.5 初始化圖形設備
22.3.6 事件處理模塊
22.3.7 游戲處理部分
22.3.8 小結
22.4 速算24
22.4.1 程序功能要求
22.4.2 輸入輸出樣例
22.4.3 程序分析
22.4.4 程序設計
22.4.5 撲克牌處理部分
22.4.6 程序運算部分
22.4.7 小結
第23章 面試題解析
23.1 基礎知識
23.1.1 指針自增自減有什么不同
23.1.2 什么是遞歸
23.1.3 宏定義與操作符的區別
23.1.4 引用與值傳遞的區別
23.1.5 指針和引用有什么區別
23.1.6 什么是棧
23.1.7 main函數執行前還會執行什么代碼
23.1.8 static有什么用途
23.1.9 定義int **a[3][4], 則變量占用的內存空間為多少
23.1.10 什么是預編譯
23.1.11 int (*s[10])(int)表示什么意義
23.1.12 結構體與共同體有何區別
23.2 算法和思維邏輯知識
23.2.1 100美元哪里去了
23.2.2 將16升水平均分給四個人
23.2.3 算出小王買了幾瓶啤酒、幾瓶飲料
23.2.4 找出不同的蘋果
23.2.5 找出不同的球
23.2.6 猜自己的帽子顏色
23.2.7 3筐水果各是什么
23.2.8 最后剩下的是誰
23.2.9 聰明的商人
23.2.10 紅球和白球
23.2.11 烏龜賽跑
23.2.12 投硬幣
附錄 ASCII編碼表
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。