第1章C語(yǔ)言
1.1什么是局部程序塊(localblock)?
1.2可以把變量保存在局部程序塊中嗎?
1.3什么時(shí)候用一條switch語(yǔ)句比用多條if語(yǔ)句更好?
1.4switch語(yǔ)句必須包含default分支嗎?
1.5switch語(yǔ)句的最后一個(gè)分支可以不要break語(yǔ)句嗎?
1.6除了在for語(yǔ)句中之外,在哪些情況下還要使用逗號(hào)運(yùn)算符?
1.7怎樣才能知道循環(huán)是否提前結(jié)束了?
1.8goto,longjmp()和setjmp()之間有什么區(qū)別?
1.9什么是左值(lvaule)?
1.10數(shù)組(array)可以是左值嗎?
1.11什么是右值(rvaule)?
1.12運(yùn)算符的優(yōu)先級(jí)總能保證是"自左至右"或"自右至左"的順序嗎?
1.13十十var和var十十有什么區(qū)別?
1.14取模運(yùn)算符(modulusoperator)"%"的作用是什么2
第2章 變量和數(shù)據(jù)存儲(chǔ)
2.1變量存儲(chǔ)在內(nèi)存(memory)中的什么地方?
2.2變量必須初始化嗎?
2.3什么是頁(yè)抖動(dòng)(pagethrashing)?
2.4什么是const指針?
2.5什么時(shí)候應(yīng)該使用register修飾符?它真的有用嗎?
2.6什么時(shí)候應(yīng)該使用volatile修飾符?
2.7一個(gè)變量可以同時(shí)被說(shuō)明為const和volatile嗎?
2.8什么時(shí)候應(yīng)該使用const修飾符?
2.9浮點(diǎn)數(shù)比較(floating-Pointcomparisons)的可靠性如何?
2.10怎樣判斷一個(gè)數(shù)字型變量可以容納的最大值?
2.11對(duì)不同類(lèi)型的變量進(jìn)行算術(shù)運(yùn)算會(huì)有問(wèn)題嗎?
2.12什么是運(yùn)算符升級(jí)(operatorpromotion)?
2.13什么時(shí)候應(yīng)該使用類(lèi)型強(qiáng)制轉(zhuǎn)換(typecast)?
2.14什么時(shí)候不應(yīng)該使用類(lèi)型強(qiáng)制轉(zhuǎn)換(typecast)?
2.15可以在頭文件中說(shuō)明或定義變量嗎?
2,16說(shuō)明一個(gè)變量和定義一個(gè)變量有什么區(qū)別?
3.17可以在頭文件中說(shuō)明static變量嗎?
2.18用const說(shuō)明常量有什么好處?
第3章排序與查找
3.1哪一種排序方法最方便?
3.2哪一種排序方法最快?
3.3當(dāng)要排序的數(shù)據(jù)集因太大而無(wú)法全部裝入內(nèi)存時(shí),應(yīng)怎樣排序?
3.4哪一種查找方法最方便?
3.5哪一種查找方法最快?
3.6什么是哈希查找?
3.7怎樣對(duì)鏈表進(jìn)行排序?
3.8怎樣查找鏈表中的數(shù)據(jù)?
第4章數(shù)據(jù)文件
4.1當(dāng)errno為一個(gè)非零值時(shí),是否有錯(cuò)誤發(fā)生?
4.2什么是流(stream)?
4.3怎樣重定向一個(gè)標(biāo)準(zhǔn)流?
4.4怎樣恢復(fù)一個(gè)重定向了的標(biāo)準(zhǔn)流?
4.5stdout能被強(qiáng)制打印到非屏幕設(shè)備上嗎?
4.6文本模式(textmode)和二進(jìn)制模式(binarymode)有什么區(qū)別?
4.7怎樣判斷是使用流函數(shù)還是使用低級(jí)函數(shù)?
4.8怎樣列出某個(gè)目錄下的文件?
4.9怎樣列出一個(gè)文件的日期和時(shí)間?
4.10怎樣對(duì)某個(gè)目錄下的文件名進(jìn)行排序?
4.11怎樣判斷一個(gè)文件的屬性?
4.12怎樣查看PATH環(huán)境變量?
4.13怎樣打開(kāi)一個(gè)同時(shí)能被其它程序修改的文件?
4.14怎樣確保只有你的程序能存取一個(gè)文件?
4.15怎樣防止其它程序修改你正在修改的那部分文件內(nèi)容?
4.16怎樣一次打開(kāi)20個(gè)以上的文件?
4.17怎樣避開(kāi)"Abort,Retry,Fail"消息?
4.18怎樣讀寫(xiě)以逗號(hào)分界的文本?
第5章編譯預(yù)處理
5.1什么是宏(macro)?怎樣使用宏?
5.2 預(yù)處理程序(preprocessor)有什么作用?
5.3怎樣避免多次包含同一個(gè)頭文件?
5.4可以用#include指令包含類(lèi)型名不是".h"的文件嗎?
5.5用#define指令說(shuō)明常量有什么好處?
5.6用enum關(guān)鍵字說(shuō)明常量有什么好處?
5.7與用#define指令說(shuō)明常量相比,用enum關(guān)鍵字說(shuō)明常量有什么好處?
5.8如何使部分程序在演示版中失效?
5.9什么時(shí)候應(yīng)該用宏代替函數(shù)?
5.10使用宏更好,還是使用函數(shù)更好?
5.11在程序中加入注釋的最好方法是什么?
5.12#include<file>和#include"file"有什么不同?
5.13你能指定在編譯時(shí)包含哪一個(gè)頭文件嗎?
5.14包含文件可以嵌套嗎?
5.15包含文件最多可以嵌套幾層?
5.16連接運(yùn)算符"##"有什么作用?
5.17怎樣建立對(duì)類(lèi)型敏感的宏?
5.18什么是標(biāo)準(zhǔn)預(yù)定義宏?
5.19怎樣才能使程序打印出發(fā)生錯(cuò)誤的行號(hào)?
5.20怎樣才能使程序打印出發(fā)生錯(cuò)誤的源文件名?
5.21怎樣判斷一個(gè)程序是用C編譯程序還是用C++編譯程序編譯的?
5.22預(yù)處理指令#pragma有什么作用?
5.23#line有什么作用?
5.24標(biāo)準(zhǔn)預(yù)定義宏_FILE_有什么作用?
5.25怎樣在程序中打印源文件名?
5.26標(biāo)準(zhǔn)預(yù)定義宏_LINE_有什么作用?
5.27怎樣在程序中打印源文件的當(dāng)前行號(hào)?
5.28標(biāo)準(zhǔn)預(yù)定義宏_DATE_和_TIME_有什么作用?
5.29怎樣在程序中打印編譯日期和時(shí)間?
5.30怎樣判斷一個(gè)程序是否遵循ANSIC標(biāo)準(zhǔn)?
5.31怎樣取消一個(gè)已定義的宏?
5.32怎樣檢查一個(gè)符號(hào)是否已被定義?
5.33C語(yǔ)言提供哪些常用的宏?
第6章字符串操作
6.1串拷貝(strcpy)和內(nèi)存拷貝(memcpy)有什么不同?它們適合于在哪種情況下
使用?
6.2怎樣刪去字符串尾部的空格?
6.3怎樣刪去字符串頭部的空格?
6.4怎樣使字符串右對(duì)齊?
6.5怎樣將字符串打印成指定長(zhǎng)度?
6.6.怎樣拷貝字符串的一部分?
6.7怎樣將數(shù)字轉(zhuǎn)換為字符串?
6.8怎樣將字符串轉(zhuǎn)換為數(shù)字?
6.9怎樣打印字符串的一部分?
6.10怎樣判斷兩個(gè)字符串是否相同?
第7章指針和內(nèi)存分配
7.1什么是間接引用(indirection)?
7.2最多可以使用幾層指針?
7.3 什么是空指針?
7.4什么時(shí)候使用空指針?
7.5 什么是void指針?
7.6什么時(shí)候使用void指針?
7.7兩個(gè)指針可以相減嗎?為什么?
7.8把一個(gè)值加到一個(gè)指針上意味著什么?
7.9NULL總是被定義為o嗎?
7.10NULL總是等于0嗎?
7.11用指針作if語(yǔ)句的條件表達(dá)式意味著什么?
7.12兩個(gè)指針可以相加嗎?為什么?
7.13怎樣使用指向函數(shù)的指針?
7.14怎樣用指向函數(shù)的指針作函數(shù)的參數(shù)?
7.15數(shù)組的大小可以在程序運(yùn)行時(shí)定義嗎?
7.16用malloc()函數(shù)更好還是用calloc()函數(shù)更好?
7.17怎樣說(shuō)明一個(gè)大于64KB的數(shù)組?
7.18far和near之間有什么區(qū)別?
7.19什么時(shí)候使用far指針?
7.20什么是棧(stack)?
7.21什么是堆(heap)?
7.22兩次釋放一個(gè)指針會(huì)導(dǎo)致什么結(jié)果?
7.23NULL和NUL有什么不同?
7.24為什么不能給空指針賦值?什么是總線(xiàn)錯(cuò)誤.內(nèi)存錯(cuò)誤和內(nèi)存信息轉(zhuǎn)儲(chǔ)?
7.25怎樣確定一塊已分配的內(nèi)存的大小?
7,26free()函數(shù)是怎樣知道要釋放的內(nèi)存塊的大小的?
7.27可以對(duì)void指針進(jìn)行算術(shù)運(yùn)算嗎?
7.28怎樣打印一個(gè)地址?
第8章函數(shù)
8.1什么時(shí)候說(shuō)明函數(shù)?
8.2為什么要說(shuō)明函數(shù)原型?
8.3一個(gè)函數(shù)可以有多少個(gè)參數(shù)?
8.4什么是內(nèi)部函數(shù)?
8.5如果一個(gè)函數(shù)沒(méi)有返回值,是否需要加入return語(yǔ)句?
8.6怎樣把數(shù)組作為參數(shù)傳遞給函數(shù)?
8.7在程序退出main()函數(shù)之后,還有可能執(zhí)行一部分代碼嗎?
8.8用PASCAL修飾符說(shuō)明的函數(shù)與普通C函數(shù)有什么不同?
8.9exit()和return有什么不同?
第9章數(shù)組
9.1數(shù)組的下標(biāo)總是從0開(kāi)始嗎?
9.2可以使用數(shù)組后面第一個(gè)元素的地址嗎?
9.3為什么要小心對(duì)待位于數(shù)組后面的那些元素的地址呢?
9.4在把數(shù)組作為參數(shù)傳遞給函數(shù)時(shí),可以通過(guò)sizeof運(yùn)算符告訴函數(shù)數(shù)組的
大小嗎?
9.5通過(guò)指針或帶下標(biāo)的數(shù)組名都可以訪(fǎng)問(wèn)數(shù)組中的元素,哪一種方式更好呢?
9.6可以把另外一個(gè)地址賦給一個(gè)數(shù)組名嗎?
9.7array_name和&array_name有什么不同?
9.8為什么用const說(shuō)明的常量不能用來(lái)定義一個(gè)數(shù)組的初始大小?
9.9字符串和數(shù)組有什么不同?
第10章位(bit)和字節(jié)(byte)
10.1用什么方法存儲(chǔ)標(biāo)志(flag)效率最高?
10,2什么是"位屏蔽(bitmasking)"?
10.3位域(bitfields)是可移植的嗎?
10.4移位和乘以2這兩種方式中哪一種更好?
10.5什么是高位字節(jié)(high-orderbyte)和低位字節(jié)(low-orderbyte)?
10.616位和32位的數(shù)是怎樣存儲(chǔ)的?
第11章調(diào)試
11.1如果我運(yùn)行的程序掛起了,應(yīng)該怎么辦?
11.2如何檢測(cè)內(nèi)存漏洞(leak)?
11.3調(diào)試程序的最好方法是什么?
11.4怎樣調(diào)試TSR程序?
11.5怎樣獲得一個(gè)能報(bào)告條件失敗的程序?
第12章標(biāo)準(zhǔn)庫(kù)函數(shù)
12.1為什么應(yīng)該使用標(biāo)準(zhǔn)庫(kù)函數(shù)而不要自己編寫(xiě)函數(shù)?
12.2為了定義我要使用的標(biāo)準(zhǔn)庫(kù)函數(shù),我需要使用哪些頭文件?
12.3怎樣編寫(xiě)參數(shù)數(shù)目可變的函數(shù)?
12.4獨(dú)立(free-standing)環(huán)境和宿主(hosted)環(huán)境之間有什么區(qū)別?
12.5對(duì)字符串進(jìn)行操作的標(biāo)準(zhǔn)庫(kù)函數(shù)有哪些?
12.6對(duì)內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫(kù)函數(shù)有哪些?
12.7怎樣判斷一個(gè)字符是數(shù)字.字母或其它類(lèi)別的符號(hào)?
12.8什么是"局部環(huán)境(locale)"?
12.9有沒(méi)有辦法從一個(gè)或多個(gè)函數(shù)中跳出2
12.10什么是信號(hào)(signal)?用信號(hào)能做什么2
12.11為什么變量名不能以下劃線(xiàn)開(kāi)始?
12.12為什么編譯程序提供了兩個(gè)版本的malloc()函數(shù)?
12.13適用于整數(shù)和浮點(diǎn)數(shù)的數(shù)學(xué)函數(shù)分別有哪些?
12.14什么是多字節(jié)字符(multibytecharacters)?
12.15怎樣操作由多字節(jié)字符組成的字符串?
第13章時(shí)間和日期
13.1怎樣把日期存儲(chǔ)到單個(gè)數(shù)字中?有這方面的標(biāo)準(zhǔn)嗎?
13.2怎樣把時(shí)間存儲(chǔ)到單個(gè)數(shù)字中?有這方面的標(biāo)準(zhǔn)嗎?
13.3為什么定義了這么多不同的時(shí)間標(biāo)準(zhǔn)?
13.4存儲(chǔ)日期的最好方法是哪一種?
13.5存儲(chǔ)時(shí)間的最好方法是哪一種?
第14章系統(tǒng)調(diào)用
14.1怎樣檢查環(huán)境變量(environmentvariables)的值?
14.2怎樣在程序中調(diào)用DOS函數(shù)?
14.3怎樣在程序中調(diào)用BIOS函數(shù)?
14.4怎樣在程序中存取重要的DOS內(nèi)存位置?
14.5什么是BIOS?
14.6什么是中斷?
14.7使用ANSI函數(shù)和使用BIOS函數(shù),哪種方式更好?
14.8可以通過(guò)BIOS把顯示模式改為VGA圖形模式嗎?
14.9運(yùn)算符的優(yōu)先級(jí)總能起作用嗎(從左至右,從右至左)?
14.10函數(shù)參數(shù)的類(lèi)型必須在函數(shù)頭部或緊跟在其后說(shuō)明嗎?為什么?
14.11程序應(yīng)該總是包含main()的一個(gè)原型嗎?
14.12main()應(yīng)該總是返回一個(gè)值嗎?
14.13可以通過(guò)BIOS控制鼠標(biāo)嗎?
第15章可移植性
15.1編譯程序中的C++擴(kuò)充功能可以用在C程序中嗎?
15.2C++和C有什么區(qū)別?
15.3在C程序中可以用"//"作注釋符嗎?
15.4char,short,int和long類(lèi)型分別有多長(zhǎng)?
15.5高位優(yōu)先(big-endian)與低位優(yōu)先(little-endian)的計(jì)算機(jī)有什么區(qū)別?
第16章ANSI/ISO標(biāo)準(zhǔn)
16.1運(yùn)算符的優(yōu)先級(jí)總能起作用嗎?
16,2函數(shù)參數(shù)類(lèi)型必須在函數(shù)參數(shù)表中或緊跟其后的部分中說(shuō)明嗎?
16.3程序中必須包含main()的原型嗎?
16.4main()應(yīng)該總是返回一個(gè)值嗎?
第17章用戶(hù)界面--屏幕和鍵盤(pán)
17.1為什么直到程序結(jié)束時(shí)才看到屏幕輸出?
17.2怎樣在屏幕上定位光標(biāo)?
17.3向屏幕上寫(xiě)數(shù)據(jù)的最簡(jiǎn)單的方法是什么?
17.4向屏幕上寫(xiě)文本的最快的方法是什么?
17.5怎樣防止用戶(hù)用Ctr十Break鍵中止程序的運(yùn)行?
17.6怎樣才能只得到一種特定類(lèi)型的數(shù)據(jù),例如字符型數(shù)據(jù)?
17.7為什么有時(shí)不應(yīng)該用scanf()來(lái)接收數(shù)據(jù)?
17.8怎樣在程序中使用功能鍵和箭頭鍵?
17.9怎樣防止用戶(hù)向一個(gè)內(nèi)存區(qū)域中輸入過(guò)多的字符?
17.10怎樣用O補(bǔ)齊一個(gè)數(shù)字?
17.11怎樣才能打印出美元-美分值?
17.12怎樣按科學(xué)記數(shù)法打印數(shù)字?
17.13什么是ANSI驅(qū)動(dòng)程序?
17.14怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)清屏?
17.15怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)存儲(chǔ)光標(biāo)位置?
17.16怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)恢復(fù)光標(biāo)位置?
17.17怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)改變屏幕顏色?
17.18怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)寫(xiě)帶有顏色的文本?
17.19怎樣通過(guò)ANSI驅(qū)動(dòng)程序來(lái)移動(dòng)光標(biāo)?
第18章程序的編寫(xiě)和編譯
18.1程序是應(yīng)該寫(xiě)成一個(gè)源文件還是多個(gè)源文件?
18.2各種存儲(chǔ)模式之間有什么區(qū)別?
18.3最常使用的存儲(chǔ)模式有哪些?
18.4應(yīng)該使用哪種存儲(chǔ)模式?
18.5怎樣生成一個(gè)".COM"文件?
18.6".COM"文件有哪些地方優(yōu)于".EXE"文件?
18.7當(dāng)一個(gè)庫(kù)被連接到目標(biāo)上時(shí),庫(kù)中的所有函數(shù)是否都會(huì)被加到一個(gè)".EXE"
文件中?
18.8可以把多個(gè)庫(kù)函數(shù)包含在同一個(gè)源文件中嗎?
18.9為什么要建立一個(gè)庫(kù)?
18.10如果一個(gè)程序包含多個(gè)源文件,怎樣使它們都能正常工作?
18.11連接過(guò)程中出現(xiàn)"DGROUP:groupexceeds64K"消息是怎么回事?
18.12怎樣防止程序用盡內(nèi)存?
18.13如果程序太大而不能在DOS下運(yùn)行,怎樣才能使它在DOS下運(yùn)行呢?
18.14怎樣才能使DOS程序獲得超過(guò)640KB的可用內(nèi)存呢7
18.15近程型(near)和遠(yuǎn)程型(far)的區(qū)別是什么?
第19章編程風(fēng)格和標(biāo)準(zhǔn)
19.1可以在變量名中使用下劃線(xiàn)嗎?
19.2可以用變量名來(lái)指示變量的數(shù)據(jù)類(lèi)型嗎?
19.3使用注釋會(huì)影響程序的速度.大小或效率嗎?
19.4使用空白符會(huì)影響程序的速度.大小或效率嗎?
19.5什么是駱駝式命名法?
19.6較長(zhǎng)的變量名會(huì)影響程序的速度.大小或效率嗎?
19.7給函數(shù)命名的正確方法是什么?
19.8使用大括號(hào)的正確方法是什么?
19.9一個(gè)變量名應(yīng)該使用多少個(gè)字母?ANSI標(biāo)準(zhǔn)允許有多少個(gè)有效字符?
19.10什么是匈牙利式命名法?應(yīng)該使用它嗎?
19.11什么是重復(fù)處理(iterativeprocessing)?
19.12什么是遞歸(recursion)?怎樣使用遞歸?
19.13在C語(yǔ)言中,表示真和假的最好方法是什么?
19,14空循環(huán)(nullloops)和無(wú)窮循環(huán)(infiniteloops)有什么區(qū)別?
19.15continue和break有什么區(qū)別?
第20章雜項(xiàng)(Miscellaneous)
20.1怎樣獲得命令行參數(shù)?
20.2程序總是可以使用命令行參數(shù)嗎?
20.3"異常處理(exceptionhandling)"和"結(jié)構(gòu)化異常處理(structuredexception
handling)"有什么區(qū)別?
20.4怎樣在DOS程序中建立一個(gè)延時(shí)器(delaytimer)?
20.5Kernighan和Ritchie是誰(shuí)?
20.6怎樣產(chǎn)生隨機(jī)數(shù)?
20.7什么時(shí)候應(yīng)該使用32位編譯程序?
20.8怎樣中斷一個(gè)Windows程序?
20.9為什么要使用靜態(tài)變量?
20.10怎樣在一個(gè)程序后面運(yùn)行另一個(gè)程序?
20.11怎樣在一個(gè)程序執(zhí)行期間運(yùn)行另一個(gè)程序?
20.12怎樣把數(shù)據(jù)從一個(gè)程序傳給另一個(gè)程序?
20.13怎樣判斷正在運(yùn)行的程序所在的目錄?
20.14怎樣找到程序中的重要文件(數(shù)據(jù)庫(kù),配置文件,等等)?
20.15本書(shū)的有些例子程序有許多缺陷,為什么不把它們寫(xiě)得更好?
20.16怎樣使用Ctr十Break失效?
20.17可以使熱啟動(dòng)(Ctrl十Alt十Delete)失效嗎?
20.18怎樣判斷一個(gè)字符是否是一個(gè)字母?
20.19怎樣判斷一個(gè)字符是否是一個(gè)數(shù)字?
20.20怎樣把一個(gè)十六進(jìn)制的值賦給一個(gè)變量?
20. 21怎樣把一個(gè)八進(jìn)制的值賦給一個(gè)變量?
20. 22什么是二進(jìn)制?
20. 23什么是八進(jìn)制?
20. 24什么是十六進(jìn)制?
20.25什么是換碼符(escapecharacters)?
第21章Windows
21.1可以在Windows程序中使用printf()嗎?
21.2怎樣在Windows程序中建立一個(gè)延時(shí)器?
21.3什么是句柄?
21.4怎樣中止一個(gè)Windows程序?
21.5什么是GDI?通過(guò)什么途徑使用它?
21.6為什么Windows.h很重要?
21.7什么是WindowsSDK?
21.8在編寫(xiě)Windows程序時(shí)Microsoft的WindowsSDK是必需的嗎?
21.9Windows函數(shù)和標(biāo)準(zhǔn)DOS函數(shù)有什么區(qū)別?
21.10什么是動(dòng)態(tài)連接?
21.11HANDLE,HWND和HDC之間有什么區(qū)別?
21.12Windows程序?qū)τ诓煌木幾g程序是兼容的嗎?
21.13Windows總是保存和刷新程序的窗口嗎?
21.14怎樣確定一個(gè)Windows程序的用戶(hù)區(qū)的大小?
21.15什么是OEM鍵碼?
21.16Windows程序需要考慮OEM鍵碼嗎?
21.17什么是虛擬鍵碼?
21.18什么是死鍵?
21.19插入標(biāo)記(caret)和光標(biāo)(cursor)有什么區(qū)別?
21.20在程序用戶(hù)區(qū)外撤擊鼠標(biāo)能被捕獲到嗎?
21.21怎樣創(chuàng)建一個(gè)活動(dòng)的位圖?
21.22怎樣在Windows程序中獲得日期和時(shí)間?
21.23怎樣在Windows程序中更新標(biāo)題條(titlebar)?
21.24怎樣在Windows程序中獲得系統(tǒng)顏色?
21.25什么是系統(tǒng)顏色常量?
21.26怎樣創(chuàng)建自己的按鈕或控制(controls)?
21.27什么是靜態(tài)子窗口(staticchildwindows)?
21.28怎樣創(chuàng)建窗口子類(lèi)(windowsubclassing)?
21.29什么是編輯類(lèi)(editclass)?
21.30什么是列表框類(lèi)(listboxclass)?
21.31Windows是怎樣組織內(nèi)存的?
21.32怎樣在Windows程序中分配內(nèi)存?
21.33模式(modal)對(duì)話(huà)框和非模式(modeless)對(duì)話(huà)框有什么區(qū)別?
索引
附錄標(biāo)準(zhǔn)庫(kù)函數(shù)的頭文件