作者:明日科技
圖書詳細信息:ISBN:9787302276678
定價:49.8元印次:1-1
裝幀:平裝
印刷日期:2011-12-28圖書簡介:
本書以基礎知識為框架,介紹了C語言各部分知識所對應的常見開發疑難問題,並作了透徹地解析。本書內容包括初識C語言,一個簡單的C程式,算法入門,常用數據類型,運算符與表達式,輸入/輸出函式,選擇、分支結構程式設計,循環結構,數組,函式編程基礎,指針解析,常用數據結構,位運算操作符,存儲管理,預處理和函式類型,檔案的讀寫操作和圖形圖像處理。
書中列出的300個疑難問題,都是一線開發人員在實際項目中經常會遇到的。針對這些問題,本書給出了詳盡的解決方案,並作了技術上的解析。通過對本書的學習,讀者能夠迅速提高解決實際問題的能力。
本書提供了源程式、素材,提供了相關的模組庫、案例庫、素材庫、題庫等多種形式的輔助學習資料,還提供迅速及時的微博、QQ、論壇等技術支持。
本書涉及內容豐富經典,講解細緻,適合各種水平的C語言學習者進行學習查閱,還可以作為軟體開發人員的參考資料。
學會站在巨人的肩膀上!
程式設計師在求職時,經常會被問到有關開發經驗的問題。例如,“從事了多少年的開發?”、“參與了哪些大型項目?”……為何面試官對項目經驗豐富的求職者青睞有加?究其根源,是由於程式開發是一門實踐性非常強的學科。正所謂“紙上得來終覺淺,絕知此事要躬行”。編程經驗是程式開發者在長期的實踐中逐步積累的寶貴的技術資源庫,其中包含各種習慣用法、知識理論、代碼片段和套用技巧等。要想成為經驗豐富的編程高手,除了勤學苦練,也要學會站在前人的肩膀上,通過分析別人的代碼而有所領悟,或者借鑑他人的經驗技巧形成自己的技能,在認識錯誤與解決問題中不斷進步。這也是每個編程者的必由之路。
本書匯集了300個一線開發人員常見的疑難問題,每個問題都給出了詳細的解答與點評,圖文並茂、難易並舉,通過對本書的學習,讀者可以盡享前人的開發經驗,迅速提升個人的開發能力。
本書內容
本書以基礎知識為框架,介紹了C語言各部分知識所對應的常見開發疑難問題,並作了透徹地解析。全書共分為17章,主要內容包括初識C語言,一個簡單的C程式,算法入門,常用數據類型,運算符與表達式,輸入/輸出函式,選擇、分支結構程式設計,循環結構,數組,函式編程基礎,指針解析,常用數據結構,位運算操作符,存儲管理,預處理和函式類型,檔案的讀寫操作和圖形圖像處理。
為了更清晰地闡述問題並給出詳盡的解決方案,本書設定了以下欄目。
? 問題闡述
對問題進行詳細闡述,對複雜問題給出問題產生的條件,並對問題中需要解決的部分作出說明。
? 專家解答
根據問題進行具體分析,給出相應的解題思路及正確答案,並提供該問題涉及的技術知識。
? 專家點評
對問題及解答進行總結,為以後的問題解決提供思路;此外,還會列出一些有關此問題應該注意的事項,以及對該問題的一些拓展。
本書特色
? 貼近套用
本書精選的疑難問題都是在實際項目開發中經常會遇到的,主要目的就是為讀者答疑解惑。
? 橫向連結
本書知識框架與《C語言開發入門及項目實戰》一書相對應,可以在使用《C語言開發入門及項目實戰》一書進行基礎學習之後,使用本書豐富並提高技能。
? 解析透徹
本書對每個問題的相關知識都作了細緻地講解,並進行知識拓展,使讀者不僅知其然而且知其所以然。
? 授人以漁
本書在講解技術的同時,還注重對讀者能力的培養,使讀者真正掌握分析問題與解決問題的能力。
本書配套資源
本書提供了內容豐富的配套資源,包括源程式、素材,以及模組庫、案例庫、題庫、素材庫等多項輔助內容,讀者可以通過如下方式獲取。
第1種方式:
(1)登錄清華大學出版社的網站,在網頁右上角的搜尋文本框中輸入本書書名(注意區分大小寫和留出空格),或者輸入本書關鍵字,或者輸入本書ISBN號(注意去掉ISBN號間隔線“-”),單擊“搜尋”按鈕。
(2)找到本書後單擊超連結,在該書的網頁下側單擊“網路資源”超連結,即可下載。
第2種方式:
訪問本書的新浪微博:C語言圖書,找到配套資源的連結地址進行下載。
讀者人群
本書非常適合以下人員閱讀:
? 從事C語言編程的開發人員
? 有一定語言基礎,想進一步提高技能的人員
? 大中專院校的老師和學生
? 即將走上相關工作崗位的大學畢業生
? 相關培訓機構的老師和學員
? C語言編程愛好者
第1章 初識C語言 1
問題1 C語言是如何發展起來的? 2
問題2 什麼是ANSI標準? 2
問題3 C語言編寫程式的優點有哪些? 3
問題4 如何規避C語言的不足之處? 4
問題5 C語言的套用領域有哪些? 5
問題6 什麼是C99標準?與C89標準
相比,C99標準有哪些
新特性? 6
問題7 C語言是C++的子集嗎? 10
問題8 C語言程式的開發過程是
怎樣的? 11
問題9 什麼是編譯程式和解釋程式? 12
問題10 ANSI C的編譯限制有哪些? 13
第2章 一個簡單的C程式 14
問題11 C語言的入口函式是什麼? 15
問題12 C語言程式由哪些部分組成? 16
問題13 如何在Turbo C 2.0中輸入一個
程式? 16
問題14 如何在Visual C++ 6.0中運行
一個C程式? 18
問題15 如何在Visual C++ 2008中運行
一個C程式? 22
問題16 如何提高程式的可讀性? 26
問題17 什麼是關鍵字?C語言的關鍵
字有哪些? 27
問題18 什麼是標識符?使用標識符的
注意事項是什麼? 29
問題19 void關鍵字都有哪些用途? 30
問題20 什麼是匈牙利命名約定?它是否
是好的約定? 31
第3章 算法入門 33
問題21 為什麼說算法是程式設計的
靈魂? 34
問題22 算法的特性有哪些? 34
問題23 如何評價一個算法的好壞? 35
問題24 算法的表示方法都有哪些? 36
問題25 算法的基本結構是什麼? 40
問題26 算法有哪幾類? 42
問題27 算法的效率度量方法有哪些? 42
問題28 什麼是算法的時間複雜度? 43
問題29 什麼是算法的空間複雜度? 44
問題30 什麼是分治法算法思想? 45
第4章 常用數據類型 46
問題31 聲明變數和定義變數的區別
是什麼? 47
問題32 在開發時如何決定使用哪種
數據類型? 48
問題33 什麼是常量?如何區分常量
和變數? 48
問題34 各種數據類型所占的記憶體是
多少? 49
問題35 字元與字元串的差別有
哪些? 50
問題36 變數是否必須初始化? 51
問題37 為什麼會發生數據溢出?如何
避免數據溢出? 52
問題38 局部變數和全局變數能否
重名? 53
問題39 全局變數可不可以定義在可被
多個.C檔案包含的頭檔案中?
為什麼? 53
問題40 如何引用一個已經定義過的
外部變數? 54
問題41 全局變數和局部變數的存儲
方式有什麼區別? 55
問題42 整型常量的存儲形式是
怎樣的? 55
問題43 整型常量的表示形式有
哪幾種? 56
問題44 使用了沒定義的變數會有什麼
現象? 56
問題45 static關鍵字有什麼作用? 57
問題46 const關鍵字有什麼作用? 59
問題47 const與#define相比有何
優點? 60
問題48 sizeof不是函式嗎? 61
問題49 float類型數如何與0值
比較? 63
問題50 靜態變數與自動變數的區別
有哪些? 64
第5章 運算符與表達式 66
問題51 運算符的優先權和結合性是
怎樣的? 67
問題52 如何區分“,”是運算符還是
分隔設定? 68
問題53 C語言如何解釋x=a+=b+c? 69
問題54 x=x+1,x+=1,x++,哪個效率
最高? 70
問題55 什麼是運算符的目?怎樣進行
區分? 70
問題56 使用“++”和“--”運算符需要
注意些什麼? 71
問題57 如何理解i+++j? 71
問題58 賦值表達式中什麼是左值和右值?數組名作為左右值時又具有怎樣的意義? 72
問題59 如何確定條件表達式的結果的
數據類型? 73
問題60 “%”運算符是否可以對小數
進行運算? 74
問題61 “/”運算符得到的結果一定為
整數嗎? 75
問題62 在進行多種數據類型混合運算
的時候,數據類型自動轉換有
哪些規則? 76
問題63 C語言中有哪些簡化的運算
表達式? 77
問題64 使用邏輯表達式需要注意哪
幾點問題? 77
問題65 i++*i++這樣的表達式為什麼
不能得到預期的結果? 78
問題66 a[i]=i++;這樣的代碼正確嗎? 79
問題67 編寫表達式時需要注意
什麼? 79
問題68 如何理解c=a,b;? 80
問題69 為無符號類型變數賦值時,數據
類型應怎樣轉換? 81
問題70 C語言表達式的求值順序總是
按照運算符的結合性保證
“自左至右”或者“自右
至左”嗎? 81
第6章 輸入/輸出函式 83
問題71 函式printf()的基本格式
是什麼? 84
問題72 如何認識printf()函式的格式
字元? 85
問題73 函式printf()的標誌有幾種?
如何使用? 91
問題74 如何控制輸出最小寬度? 91
問題75 如何控制輸出精度? 92
問題76 如何控制輸出長度? 93
問題77 如何動態設定輸出寬度和
精度? 94
問題78 printf()函式的返回值是
什麼? 95
問題79 如何理解輸出列表? 96
問題80 函式scanf()的基本格式是
什麼? 96
問題81 scanf()函式的格式字元是
什麼? 97
問題82 使用scanf()函式應注意的問題
是什麼? 100
問題83 scanf()函式的返回值是
什麼? 101
問題84 如何使用getchar()函式? 102
問題85 getch()函式如何使用? 104
問題86 如何套用gets()函式? 104
問題87 如何套用putch()函式? 105
問題88 puts()函式該如何套用? 106
問題89 如何控制多數值的輸入? 107
問題90 如何輸入字元數組? 108
第7章 選擇、分支結構程式設計 110
問題91 5>4>3為什麼不成立——談談
關係表達式的值 111
問題92 =和==如何區分? 112
問題93 什麼叫邏輯短路? 113
問題94 if語句的基本形式有哪些?
如何套用? 114
問題95 浮點數的相等比較是否可以
用==? 116
問題96 關係運算符和數學不等號有
什麼區別? 117
問題97 if語句後面一定不能寫
分號嗎? 118
問題98 這個程式為什麼多執行了好多
語句? 119
問題99 不用關係表達式和邏輯表達式
做條件 120
問題100 怎樣理解複合語句中的
變數? 122
問題101 如何進行if語句的嵌套? 123
問題102 條件運算符“? :”怎樣
套用? 124
問題103 switch語句的基本格式是
什麼? 125
問題104 if語句與switch語句的優缺
點是什麼? 127
問題105 switch語句中的default關鍵字
是否必須? 128
問題106 break關鍵字在switch語句中
應注意什麼? 128
問題107 如何正確判斷if和else的
匹配? 130
問題108 switch和case後的表達式值的
類型是否可以是浮點型? 132
問題109 區段劃分型條件有什麼
技巧? 133
問題110 default必須寫在所有case
之後嗎? 134
第8章 循環結構 136
問題111 循環結構的基本概念是
什麼? 137
問題112 while語句的基本格式是
什麼? 138
問題113 while循環應注意什麼
問題? 139
問題114 for循環語句的基本格式
是什麼? 140
問題115 for語句的三個表達式都是
必須的嗎? 142
問題116 do…while語句的基本格式
是什麼? 144
問題117 分號在循環體中的作用? 146
問題118 while與do…while的
區別? 148
問題119 什麼是循環嵌套? 149
問題120 循環嵌套的結構是
怎樣的? 151
問題121 如何正確使用循環嵌套? 153
問題122 死循環是怎樣產生的? 154
問題123 怎樣提高循環語句的
效率? 156
問題124 continue語句的基本作用
是什麼? 158
問題125 break語句的基本作用是
什麼? 159
問題126 goto語句的基本格式是什麼?
如何使用? 161
問題127 goto語句的缺陷是什麼? 163
問題128 如何選擇循環語句? 165
問題129 如何判定循環結束和提前
結束? 165
問題130 如何避免循環中的初值錯誤
問題? 167
第9章 數組 170
問題131 什麼是數組?其存儲有何
特點? 171
問題132 數組的維數該如何理解? 171
問題133 一維數組是怎樣定義的? 172
問題134 如何引用一維數組元素? 173
問題135 如何初始化一維數組? 174
問題136 如何設計數組的排序
算法? 175
問題137 如何定義二維數組? 176
問題138 如何引用二維數組元素? 178
問題139 如何初始化二維數組? 179
問題140 如何定義字元數組? 180
問題141 如何初始化字元數組? 180
問題142 如何引用字元數組? 181
問題143 如何進行字元數組的
複製? 182
問題144 如何進行字元數組的
連線? 183
問題145 如何進行字元串的比較? 185
問題146 如何測定字元串的長度? 187
問題147 如何進行字元串大小寫的
相互轉換? 188
問題148 如何計算字元串中有多少個
單詞? 190
問題149 gets()函式和scanf()函式在輸入
字元串時有何區別? 191
問題150 puts()函式和printf()函式在輸出
字元串時有何區別? 192
問題151 數組與指針的區別是什麼? 193
問題152 為什麼作為函式形參的數組和
指針可以互換? 195
問題153 為什麼數組名作參數傳遞給子
函式時,子函式可以改變主
函式中數組的值? 196
問題154 C語言中有動態數組嗎? 197
問題155 如何實現動態二維數組? 199
問題156 strcpy()函式可以複製字元串的
一部分嗎? 201
問題157 字元串和字元數組有什麼
區別? 202
問題158 ‘\0’和“\0”有什麼區別? 203
問題159 字元數組占用記憶體
怎樣算? 204
問題160 用字元數組和指針兩種方式
定義的字元串有什麼
不同? 204
第10章 函式編程基礎 206
問題161 什麼是函式?如何分類? 207
問題162 如何定義無參函式? 209
問題163 如何定義有參函式? 210
問題164 什麼是空函數?作用是
什麼? 210
問題165 什麼是形參和實參?如何
使用? 211
問題166 如何從函式返回? 213
問題167 函式返回值你了解多少? 214
問題168 如何進行函式的一般
調用? 215
問題169 函式調用的基本方式有幾種?
各是什麼? 216
問題170 函式調用應具備哪些
條件? 216
問題171 如何進行函式的嵌套
調用? 218
問題172 什麼是遞歸調用?如何
實現? 219
問題173 函式如何將數組元素作為
實參? 222
問題174 如何將數組名作為函式
參數? 224
問題175 如何將多維數組名作為函式
參數? 227
問題176 什麼是局部變數? 228
問題177 什麼是全局變數?如何
套用? 229
問題178 存儲方式有哪幾種?分別
是什麼? 232
問題179 如何使用auto關鍵字? 233
問題180 什麼是靜態變數?如何
實現? 236
問題181 什麼是暫存器變數?如何
實現? 238
問題182 如何聲明外部變數? 239
問題183 如何調用編譯後的函式? 240
問題184 如何限定外部變數的使用
範圍? 241
問題185 如何使用函式調用實現對字
符串的統計? 242
問題186 main()函式有什麼作用? 243
問題187 什麼是內部函式? 243
問題188 什麼是外部函式?
怎么用? 244
問題189 static()函式與普通函式有什麼
區別? 245
問題190 形參和實參有什麼區別? 246
第11章 指針解析 248
問題191 什麼是指針?什麼是指針
變數? 249
問題192 如何創建指針? 250
問題193 如何初始化指針? 251
問題194 如何使用指針? 252
問題195 函式中如何傳遞指針? 254
問題196 指針、數組和地址之間的關係
是什麼? 255
問題197 如何進行指針運算? 256
問題198 如何使用指針運算元組? 258
問題199 如何用指針表示多維
數組? 260
問題200 如何使用指針操作多維
數組? 261
問題201 如何用指針為函式傳遞
數組? 263
問題202 如何用指針表示字元串? 264
問題203 如何使用字元串指針作為函式
參數? 265
問題204 字元數組和字元指針的區別
是什麼? 266
問題205 什麼是指針數組? 267
問題206 如何使用指針數組處理
字元串? 268
問題207 如何將指針數組作為函式的
參數? 269
問題208 什麼是指向指針的指針? 270
問題209 二級指針如何套用於一維
數組? 271
問題210 如何實現二級指針對二維數組
的操作? 272
問題211 二級指針如何操作字元串數組
(指針數組)? 273
問題212 如何理解返回指針的
函式? 275
問題213 什麼是指向函式的指針? 277
問題214 如何用const控制指針? 278
問題215 什麼是“野指針”? 279
問題216 main()函式的指針數組形參
是怎么回事? 279
問題217 void指針就是空指針嗎?它
有什麼作用? 281
問題218 指針是一種特殊的變數,只能
用來保存地址。這句話
對嗎? 282
問題219 字元指針、浮點數指針以及
函式指針這三種類型的變數
哪個占用的記憶體最大?
為什麼? 282
問題220 一個32位的機器,該機器的
指針是多少位? 283
第12章 常用數據結構 284
問題221 空結構體所占的記憶體是
多少? 285
問題222 在C語言中,一個結構體可以
包含指向自己的指針嗎? 286
問題223 struct person{...};person a;
為什麼編譯出錯? 287
問題224 怎樣從/向數據檔案讀/寫
結構? 289
問題225 枚舉與#define宏的區別有
哪些? 290
問題226 如何看待枚舉類型,枚舉類型
的優點是什麼? 291
問題227 關鍵字typedef的功能是
什麼? 292
問題228 類型定義是否允許嵌套? 294
問題229 typedef與#define宏的相似之處
與不同之處是什麼? 295
問題230 什麼是散列法? 296
問題231 大小端模式對union類型數據
有什麼影響? 297
問題232 如何為聯合體變數賦
初值? 298
問題233 如何證明聯合體變數的所有成員是共享一個記憶體單元的? 300
問題234 堆和棧的區別是什麼? 301
問題235 舉例說明,什麼是靜態鍊表?
什麼是動態鍊表? 302
問題236 單向鍊表、雙向鍊表和循環鏈
表有什麼區別? 304
問題237 如何在鍊表中的指定位置插入
結點? 305
問題238 如何刪除鍊表中指定位置的
結點? 306
問題239 如何創建一個動態鍊表? 308
問題240 指向結構體數組的指針如何
套用? 310
第13章 位運算操作符 312
問題241 什麼是位運算?位運算符包括
哪些? 313
問題242 移位運算中如何補位? 314
問題243 移位運算符與加減運算符的
優先權哪個較高? 315
問題244 什麼是循環移位? 316
問題245 什麼是位段?其優點是
什麼? 317
問題246 如何正確使用位段? 318
問題247 數據在計算機中的存儲單位有
哪些?有幾種存儲形式? 320
第14章 存儲管理 322
問題248 與內存息息相關的重要概念
有哪些? 323
問題249 指針指向不合法引起了哪些
記憶體問題? 324
問題250 記憶體分配與釋放引起的常見
問題有哪些? 325
問題251 什麼是記憶體越界?什麼是記憶體
泄露?二者是如何產生的? 326
問題252 C語言提供了哪些動態記憶體
分配函式? 327
問題253 malloc()函式與calloc()函式有
什麼區別? 328
問題254 記憶體耗盡怎么辦? 328
問題255 動態記憶體會被自動釋
放嗎? 330
問題256 高位優先與低位優先的不同
之處是什麼? 330
問題257 free()和delete()怎樣處理
指針? 331
問題258 怎樣利用好敏感的記憶體
資源? 333
第15章 預處理和函式類型 335
問題259 在頭檔案中#if、_STDC_等字元
起什麼作用? 336
問題260 如何書寫多條語句宏? 337
問題261 預處理中#和##運算符是什麼
意思? 338
問題262 一個頭檔案可以包含另一個頭
檔案嗎? 339
問題263 #include<>和#include“”有什麼
區別? 340
問題264 什麼是無參宏定義? 341
問題265 什麼是帶參宏定義? 342
問題266 怎樣寫參數個數可變
的宏? 343
問題267 #pragma預處理的作用
是什麼? 345
問題268 條件編譯的表達形式有
哪些? 346
問題269 如何套用內部函式? 347
問題270 如何套用外部函式? 348
第16章 檔案的讀寫操作 351
問題271 各個讀寫操作的區別是
什麼? 352
問題272 C語言檔案有哪幾類? 354
問題273 怎樣寫數據檔案,使之可以在
不同字大小、位元組順序或浮點
格式的機器上讀入? 355
問題274 能否使用fflush()函式清除多餘
的輸入? 356
問題275 fopen()函式打開檔案失敗的
原因是什麼? 357
問題276 為什麼打開檔案後要及時
關閉? 358
問題277 檔案的打開方式有哪些? 358
問題278 如何正確使用putchar()函式和getchar()函式? 360
問題279 getchar()函式、getch()函式和getche()函式的區別是
什麼? 361
問題280 使用printf()函式和scanf()函式
需要注意什麼? 362
問題281 printf()函式有哪些參數? 363
問題282 scanf()函式的格式控制包括
哪些? 364
問題283 printf()函式和scanf()函式格式
符的修飾符“*”有什麼
作用? 366
問題284 fscanf()函式、fprintf()函式與scanf()函式和printf()函式有什麼
不同? 367
問題285 如何判斷檔案的結束? 368
第17章 圖形圖像處理 371
問題286 為什麼在使用圖形函式時要
首先初始化圖形模式? 372
問題287 怎樣初始化圖形模式? 372
問題288 初始化時提示“BGI Error: Graphics not initialized
(use 'initgraph')”怎么辦? 374
問題289 怎樣利用C語言建立獨立的
圖形運行程式? 375
問題290 TC中有幾個畫線函式?怎么
使用? 376
問題291 TC中有幾個畫矩形函式?怎么
使用? 377
問題292 TC中有幾個畫圓函式?怎么
使用? 379
問題293 如何使用C語言填充封閉
圖形? 380
問題294 TC中有幾個和游標有關的
函式?怎樣使用? 382
問題295 如何在圖形模式下輸出
文本? 383
問題296 背景色、線條顏色和填充顏色
有什麼區別?何時使用? 386
問題297 怎樣記住那么多的顏色? 387
問題298 線條樣式和填充樣式都有
哪些?怎樣設定? 388
問題299 怎樣複製圖形? 392
問題300 怎樣在C語言中製作
動畫? 394