當前位置:首頁 » 編程語言 » c語言程序設計現代方法第2版

c語言程序設計現代方法第2版

發布時間: 2023-07-20 13:50:42

『壹』 c語言程序設計第2版 清華大學出版社

這個教材實在是太常見了,隨便到哪個大學旁邊的舊書店都能找到成堆的,幾塊錢就可以買一本。
個人感覺紙質的書看起來比電子版的方便一些。
學C語言不需要很好的英語,但是英語好對學C語言絕對有幫助。因為畢竟常用的TurboC是英文的,記函數,看錯誤說明啦什麼的都方便很多。
學C語言要有一些數學基礎。而且只看介紹一門語言的書想學好編程是不夠的,至少還要把數據結構什麼的編程基礎學科學好。
基礎不好不要緊,英語不好可以補英語,數學不好可以補數學,關鍵在自己願不願意為之付出一些東西。

『貳』 C語言程序設計:現代方法(第2版) c語言入門經典第四版 哪個適合初學者

我個人認為現代方法(第2版)內容安排較好,c語言入門經典第四版也是很好的教材,不過相比而言,顯得有點啰嗦。

『叄』 《C程序設計語言第2版·新版》pdf下載在線閱讀全文,求百度網盤雲資源

《C程序設計語言(第2版·新版)》([美] Brian W. Kernighan)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/1txJqYzmjYS-BSw43eLWrnQ

提取碼: sejp

書名:C程序設計語言(第2版·新版)

作者:[美] Brian W. Kernighan

譯者:徐寶文

豆瓣評分:9.4

出版社:機械工業出版社

出版年份:2004-1

頁數:258

內容簡介:

在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用廣泛。本書作者是C語言的設計者之一Dennis M. Ritchie和著名計算機科學家Brian W. Kernighan合著的一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。

原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。人們熟知的「hello,World"程序就是由本書首次引入的,現在,這一程序已經成為眾多程序設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標准做了適當的修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、准確地講述了C語言的各個特性以及程序設計的基本方法。

對於計算機從業人員來說,本書是一本必讀的程序設計語言方面的參考書。

作者簡介:

Brian W. Kernighan,貝爾實驗室計算科學研究中心高級研究人員,著名的計算機科學家。參加了UNIX系統、C語言、AWK語言和許多其他系統的開發,同時出版了許多在計算機領域具有影響的著作,如《The Elements of Programming Style》《The Practice of Programming》《The UNIX Programming Environment》《The AWK Language》《Software Tools》等。

Dennis M. Ritchie,1967年加入貝爾實驗室。他和 Ken L. Thompson 兩人共同設計並實現的C語言改變了程序設計語言發展的軌跡,是程序設計語言發展過程中的一個重要里程碑。與此同時,他們還設計並實現了UNIX操作系統。正是由於這兩項巨大貢獻,Dennis M. Ritchie 於1983年獲得了計算機界的最高獎——圖靈獎。此外,他還獲得了ACM、IEEE、貝爾實驗室等授予的多種獎項.。

『肆』 C語言程序設計:現代方法:第2版的目錄

第1章c語言概述 1
1.1c語言的歷史 1
1.1.1起源 1
1.1.2標准化 1
1.1.3基於c的語言 2
1.2c語言的優缺點 3
1.2.1c語言的優點 3
1.2.2c語言的缺點 3
1.2.3高效地使用c語言 4
問與答 5
第2章c語言基本概念 7
2.1編寫一個簡單的c程序 7
程序顯示雙關語 7
2.1.1編譯和鏈接 8
2.1.2集成開發環境 8
2.2簡單程序的一般形式 9
2.2.1指令 9
2.2.2函數 9
2.2.3語句 10
2.2.4顯示字元串 10
.2.3注釋 11
2.4變數和賦值 12
2.4.1類型 12
2.4.2聲明 13
2.4.3賦值 13
2.4.4顯示變數的值 14
程序計算箱子的空間重量 14
2.4.5初始化 15
2.4.6顯示表達式的值 16
2.5讀入輸入 16
程序計算箱子的空間重量(改進版) 16
2.6定義常量的名字 17
程序華氏溫度轉換為攝氏溫度 17
2.7標識符 18
2.8c程序的書寫規范 19
問與答 21
練習題 23
編程題 24
第3章格式化輸入/輸出 26
3.1printf函數 26
3.1.1轉換說明 27
程序用printf函數格式化數 28
3.1.2轉義序列 28
3.2scanf函數 29
3.2.1scanf函數的工作方法 30
3.2.2格式串中的普通字元 31
3.2.3易混淆的printf函數和scanf
函數 32
程序分數相加 32
問與答 33
練習題 34
編程題 35
第4章表達式 36
4.1算術運算符 36
程序計算通用產品代碼的校驗位 38
4.2賦值運算符 39
4.2.1簡單賦值 40
4.2.2左值 41
4.2.3復合賦值 41
4.3自增運算符和自減運算符 42
4.4表達式求值 43
4.5表達式語句 45
問與答 45
練習題 47
編程題 49
第5章選擇語句 50
5.1邏輯表達式 50
5.1.1關系運算符 50
5.1.2判等運算符 51
5.1.3邏輯運算符 51
5.2if語句 52
5.2.1復合語句 53
5.2.2else子句 53
5.2.3級聯式if語句 54
程序計算股票經紀人的傭金 55
5.2.4「懸空else」的問題 56
5.2.5條件表達式 57
5.2.6c89中的布爾值 58
5.2.7c99中的布爾值 58
5.3switch語句 59
程序顯示法定格式的日期 61
問與答 62
練習題 65
編程題 67
第6章循環 69
6.1while語句 69
程序顯示平方表 71
程序數列求和 71
6.2do語句 72
程序計算整數的位數 73
6.3for語句 73
6.3.1for語句的慣用法 74
6.3.2在for語句中省略表達式 75
6.3.3c99中的for語句 75
6.3.4逗號運算符 76
程序顯示平方表(改進版) 77
6.4退出循環 78
6.4.1break語句 78
6.4.2continue語句 78
6.4.3goto語句 79
程序賬簿結算 80
6.5空語句 81
問與答 83
練習題 84
編程題 85
第7章基本類型 88
7.1整數類型 88
7.1.1c99中的整數類型 90
7.1.2整數常量 90
7.1.3c99中的整數常量 91
7.1.4整數溢出 91
7.1.5讀/寫整數 91
程序數列求和(改進版) 92
7.2浮點類型 93
7.2.1浮點常量 94
7.2.2讀/寫浮點數 94
7.3字元類型 94
7.3.1字元操作 95
7.3.2有符號字元和無符號字元 95
7.3.3算術類型 96
7.3.4轉義序列 96
7.3.5字元處理函數 97
7.3.6用scanf和printf讀/寫字元 98
7.3.7用getchar和putchar讀/寫
字元 98
程序確定消息的長度 99
7.4類型轉換 100
7.4.1常用算術轉換 101
7.4.2賦值過程中的轉換 102
7.4.3c99中的隱式轉換 103
7.4.4強制類型轉換 103
7.5類型定義 105
7.5.1類型定義的優點 105
7.5.2類型定義和可移植性 105
7.6sizeof運算符 106
問與答 107
練習題 109
編程題 110
第8章數組 113
8.1一維數組 113
8.1.1數組下標 113
程序數列反向 115
8.1.2數組初始化 115
8.1.3 指定初始化式 116
程序檢查數中重復出現的數字 116
8.1.4對數組使用sizeof運算符 117
程序計算利息 118
8.2多維數組 119
8.2.1多維數組初始化 120
8.2.2常量數組 121
程序發牌 121
8.3c99中的變長數組 122
問與答 123
練習題 124
編程題 125
第9章函數 129
9.1函數的定義和調用 129
程序計算平均值 129
程序顯示倒計數 130
程序顯示雙關語(改進版) 131
9.1.1函數定義 132
9.1.2函數調用 133
程序判定素數 134
9.2函數聲明 135
9.3實際參數 136
9.3.1實際參數的轉換 137
9.3.2數組型實際參數 138
9.3.3變長數組形式參數 140
9.3.4在數組參數聲明中使用
static 141
9.3.5復合字面量 141
9.4return語句 142
9.5程序終止 143
9.6遞歸 144
程序快速排序 146
問與答 147
練習題 150
編程題 153
第10章程序結構 155
10.1局部變數 155
10.1.1靜態局部變數 156
10.1.2形式參數 156
10.2外部變數 156
10.2.1示例:用外部變數實現棧 156
10.2.2外部變數的利與弊 157
程序 猜數 158
10.3程序塊 161
10.4作用域 162
10.5構建c程序 163
程序給一手牌分類 163
問與答 169
練習題 169
編程題 170
第11章指針 172
11.1指針變數 172
11.2取地址運算符和間接定址運算符 173
11.2.1取地址運算符 173
11.2.2間接定址運算符 174
11.3指針賦值 174
11.4指針作為參數 176
程序找出數組中的最大元素和最
小元素 177
11.5指針作為返回值 179
問與答 180
練習題 181
編程題 182
第12章指針和數組 184
12.1指針的算術運算 184
12.1.1指針加上整數 185
12.1.2指針減去整數 185
12.1.3兩個指針相減 186
12.1.4指針比較 186
12.1.5指向復合常量的指針 186
12.2指針用於數組處理 186
12.3用數組名作為指針 188
程序 數列反向(改進版) 189
12.3.1數組型實際參數(改進版) 189
12.3.2用指針作為數組名 191
12.4指針和多維數組 191
12.4.1處理多維數組的元素 191
12.4.2處理多維數組的行 192
12.4.3處理多維數組的列 192
12.4.4用多維數組名作為指針 192
12.5c99中的指針和變長數組 193
問與答 194
練習題 195
編程題 197
第13章字元串 198
13.1字元串字面量 198
13.1.1字元串字面量中的轉義序列 198
13.1.2延續字元串字面量 199
13.1.3如何存儲字元串字面量 199
13.1.4字元串字面量的操作 200
13.1.5字元串字面量與字元常量 200
13.2字元串變數 200
13.2.1初始化字元串變數 201
13.2.2字元數組與字元指針 202
13.3字元串的讀和寫 203
13.3.1用printf函數和puts函數
寫字元串 203
13.3.2用scanf函數和gets函數讀
字元串 203
13.3.3逐個字元讀字元串 204
13.4訪問字元串中的字元 205
13.5使用c語言的字元串庫 206
13.5.1strcpy函數 207
13.5.2strlen函數 208
13.5.3strcat函數 208
13.5.4strcmp函數 209
程序 顯示一個月的提醒列表 209
13.6字元串慣用法 211
13.6.1搜索字元串的結尾 211
13.6.2復制字元串 213
13.7字元串數組 214
程序 核對行星的名字 217
問與答 218
練習題 220
編程題 222
第14章預處理器 225
14.1預處理器的工作原理 225
14.2預處理指令 227
14.3宏定義 227
14.3.1簡單的宏 227
14.3.2帶參數的宏 229
14.3.3#運算符 231
14.3.4##運算符 231
14.3.5宏的通用屬性 232
14.3.6宏定義中的圓括弧 233
14.3.7創建較長的宏 233
14.3.8預定義宏 234
14.3.9c99中新增的預定義宏 235
14.3.10空的宏參數 236
14.3.11參數個數可變的宏 236
14.3.12__func__標識符 237
14.4條件編譯 237
14.4.1#if指令和#endif指令 238
14.4.2defined運算符 238
14.4.3#ifdef指令和#ifndef
指令 239
14.4.4#elif指令和#else指令 239
14.4.5使用條件編譯 240
14.5其他指令 240
14.5.1#error指令 240
14.5.2#line指令 241
14.5.3#pragma指令 242
14.5.4_pragma運算符 242
問與答 243
練習題 245
第15章編寫大型程序 248
15.1源文件 248
15.2頭文件 249
15.2.1#include指令 249
15.2.2共享宏定義和類型定義 250
15.2.3共享函數原型 251
15.2.4共享變數聲明 252
15.2.5嵌套包含 253
15.2.6保護頭文件 253
15.2.7頭文件中的#error指令 254
15.3把程序劃分成多個文件 254
程序文本格式化 255
15.4構建多文件程序 260
15.4.1makefile 260
15.4.2鏈接期間的錯誤 262
15.4.3重新構建程序 262
15.4.4在程序外定義宏 264
問與答 264
練習題 265
編程題 266
第16章結構、聯合和枚舉 267
16.1結構變數 267
16.1.1結構變數的聲明 267
16.1.2結構變數的初始化 269
16.1.3指定初始化 269
16.1.4對結構的操作 270
16.2結構類型 270
16.2.1結構標記的聲明 271
16.2.2結構類型的定義 272
16.2.3結構作為參數和返回值 272
16.2.4復合字面量 273
16.3嵌套的數組和結構 274
16.3.1嵌套的結構 274
16.3.2結構數組 274
16.3.3結構數組的初始化 275
程序 維護零件資料庫 275
16.4聯合 281
16.4.1用聯合來節省空間 282
16.4.2用聯合來構造混合的數據
結構 284
16.4.3為聯合添加「標記欄位」 284
16.5枚舉 285
16.5.1枚舉標記和類型名 286
16.5.2枚舉作為整數 286
16.5.3用枚舉聲明「標記欄位」 286
問與答 287
練習題 289
編程題 293
第17章指針的高級應用 294
17.1動態存儲分配 294
17.1.1內存分配函數 294
17.1.2空指針 295
17.2動態分配字元串 296
17.2.1使用malloc函數為字元串
分配內存 296
17.2.2在字元串函數中使用動態
存儲分配 296
17.2.3動態分配字元串的數組 297
程序 顯示一個月的提醒列表
(改進版) 297
17.3動態分配數組 299
17.3.1使用malloc函數為數組分配
存儲空間 299
17.3.2calloc函數 300
17.3.3realloc函數 300
17.4釋放存儲空間 301
17.4.1free函數 301
17.4.2「懸空指針」問題 301
17.5鏈表 302
17.5.1聲明結點類型 302
17.5.2創建結點 303
17.5.3-)運算符 303
17.5.4在鏈表的開始處插入結點 304
17.5.5搜索鏈表 306
17.5.6從鏈表中刪除結點 307
17.5.7有序鏈表 308
程序 維護零件資料庫(改進版) 309
17.6指向指針的指針 313
17.7指向函數的指針 314
17.7.1函數指針作為參數 314
17.7.2qsort函數 314
17.7.3函數指針的其他用途 316
程序 列三角函數表 317
17.8受限指針 318
17.9靈活數組成員 319
問與答 320
練習題 323
編程題 325
第18章聲明 327
18.1聲明的語法 327
18.2存儲類型 328
18.2.1變數的性質 328
18.2.2auto存儲類型 329
18.2.3static存儲類型 329
18.2.4extern存儲類型 330
18.2.5register存儲類型 331
18.2.6函數的存儲類型 332
18.2.7小結 332
18.3類型限定符 333
18.4聲明符 334
18.4.1解釋復雜聲明 335
18.4.2使用類型定義來簡化聲明 336
18.5初始化式 336
18.6內聯函數 337
18.6.1內聯定義 338
18.6.2對內聯函數的限制 339
18.6.3在gcc中使用內聯函數 339
問與答 339
練習題 342
第19章程序設計 345
19.1模塊 345
19.1.1內聚性與耦合性 347
19.1.2模塊的類型 347
19.2信息隱藏 347
19.3抽象數據類型 350
19.3.1封裝 351
19.3.2不完整類型 351
19.4棧抽象數據類型 352
19.4.1為棧抽象數據類型定義介面 352
19.4.2用定長數組實現棧抽象數據
類型 353
19.4.3改變棧抽象數據類型中數據
項的類型 354
19.4.4用動態數組實現棧抽象數據
類型 355
19.4.5用鏈表實現棧抽象數據類型 357
19.5抽象數據類型的設計問題 359
19.5.1命名慣例 359
19.5.2錯誤處理 359
19.5.3通用抽象數據類型 359
19.5.4新語言中的抽象數據類型 360
問與答 360
練習題 361
編程題 362
第20章底層程序設計 363
20.1位運算符 363
20.1.1移位運算符 363
20.1.2按位求反運算符、按位與運
算符、按位異或運算符和按
位或運算符 364
20.1.3用位運算符訪問位 365
20.1.4用位運算符訪問位域 366
程序 xor加密 366
20.2結構中的位域 367
20.3其他底層技術 369
20.3.1定義依賴機器的類型 369
20.3.2用聯合提供數據的多個視角 370
20.3.3將指針作為地址使用 371
程序 查看內存單元 371
20.3.4volatile類型限定符 373
問與答 374
練習題 374
編程題 376
第21章標准庫 377
21.1標准庫的使用 377
21.1.1對標准庫中所用名字的
限制 377
21.1.2使用宏隱藏的函數 378
21.2c89標准庫概述 378
21.3c99標准庫更新 380
21.4(stddef.h):常用定義 381
21.5(stdbool.h):布爾類型和值 381
問與答 382
練習題 382
編程題 383
第22章輸入/輸出 384
22.1流 384
22.1.1文件指針 385
22.1.2標准流和重定向 385
22.1.3文本文件與二進制文件 385
22.2文件操作 386
22.2.1打開文件 386
22.2.2模式 387
22.2.3關閉文件 388
22.2.4為打開的流附加文件 389
22.2.5從命令行獲取文件名 389
程序 檢查文件是否可以打開 389
22.2.6臨時文件 390
22.2.7文件緩沖 391
22.2.8其他文件操作 392
22.3格式化的輸入/輸出 393
22.3.1…printf函數 393
22.3.2…printf轉換說明 393
22.3.3c99對…printf轉換說明的
修改 395
22.3.4…printf轉換說明示例 396
22.3.5…scanf函數 398
22.3.6…scanf格式串 398
22.3.7…scanf轉換說明 398
22.3.8c99對...scanf轉換說明的
改變 400
22.3.9scanf示例 400
22.3.10檢測文件末尾和錯誤條件 401
22.4字元的輸入/輸出 403
22.4.1輸出函數 403
22.4.2輸入函數 403
程序 復制文件 404
22.5行的輸入/輸出 405
22.5.1輸出函數 405
22.5.2輸入函數 406
22.6塊的輸入/輸出 406
22.7文件定位 407
程序 修改零件記錄文件 409
22.8字元串的輸入/輸出 409
22.8.1輸出函數 410
22.8.2輸入函數 410
問與答 411
練習題 414
編程題 416
第23章庫對數值和字元數據的支持 419
23.1(float.h):浮點類型的特性 419
23.2(limits.h):整數類型的大小 421
23.3(math.h):數學計算(c89) 422
23.3.1錯誤 422
23.3.2三角函數 422
23.3.3雙曲函數 423
23.3.4指數函數和對數函數 423
23.3.5冪函數 424
23.3.6就近取整函數、絕對值函數
和取余函數 424
23.4(math.h):數學計算(c99) 425
23.4.1ieee浮點標准 425
23.4.2類型 426
23.4.3宏 426
23.4.4錯誤 426
23.4.5函數 427
23.4.6分類宏 427
23.4.7三角函數 428
23.4.8雙曲函數 428
23.4.9指數函數和對數函數 429
23.4.10冪函數和絕對值函數 430
23.4.11誤差函數和伽瑪函數 430
23.4.12就近取整函數 431
23.4.13取余函數 432
23.4.14操作函數 432
23.4.15最大值函數、最小值函數
和正差函數 433
23.4.16浮點乘加 433
23.4.17比較宏 434
23.5(ctype.h):字元處理 434
23.5.1字元分類函數 435
程序 測試字元分類函數 436
23.5.2字元大小寫映射函數 437
程序 測試大小寫映射函數 437
23.6(string.h):字元串處理 437
23.6.1復制函數 437
23.6.2拼接函數 438
23.6.3比較函數 439
23.6.4搜索函數 440
23.6.5其他函數 442
問與答 442
練習題 443
編程題 444
第24章錯誤處理 446
24.1(assert.h):診斷 446
24.2(errno.h):錯誤 447
24.3(signal.h):信號處理 448
24.3.1信號宏 449
24.3.2signal函數 449
24.3.3預定義的信號處理函數 450
24.3.4raise函數 450
程序 測試信號 451
24.4(setjmp.h):非局部跳轉 452
程序 測試setjmp和longjmp 452
問與答 453
練習題 454
第25章國際化特性 456
25.1(locale.h):本地化 456
25.1.1類別 456
25.1.2setlocale函數 457
25.1.3localeconv函數 458
25.2多位元組字元和寬字元 461
25.2.1多位元組字元 461
25.2.2寬字元 461
25.2.3統一碼和通用字元集 462
25.2.4統一碼編碼 462
25.2.5多位元組/寬字元轉換函數 463
25.2.6多位元組/寬字元串轉換函數 465
25.3雙字元和三字元 465
25.3.1三字元 465
25.3.2雙字元 466
25.3.3(iso646.h):拼寫替換 467
25.4通用字元名 467
25.5(wchar.h):擴展的多位元組和寬字元
實用工具 467
25.5.1流傾向 468
25.5.2格式化寬字元輸入/輸出
函數 468
25.5.3寬字元輸入/輸出函數 470
25.5.4通用的寬字元串實用工具 471
25.5.5寬字元時間轉換函數 474
25.5.6擴展的多位元組/寬字元轉換
實用工具 474
25.6(wctype.h):寬字元分類和映射實
用工具 477
25.6.1寬字元分類函數 477
25.6.2可擴展的寬字元分類函數 478
25.6.3寬字元大小寫映射函數 478
25.6.4可擴展的寬字元大小寫映射
函數 478
問與答 479
練習題 479
編程題 480
第26章其他庫函數 482
26.1(stdarg.h):可變參數 482
26.1.1調用帶有可變參數列表的
函數 483
26.1.2v…printf函數 484
26.1.3v…scanf函數 485
26.2(stdlib.h):通用的實用工具 485
26.2.1數值轉換函數 485
程序 測試數值轉換函數 486
26.2.2偽隨機序列生成函數 488
程序 測試偽隨機序列生成函數 488
26.2.3與環境的通信 489
26.2.4搜索和排序實用工具 490
程序 確定航空里程 491
26.2.5整數算術運算函數 492
26.3(time.h):日期和時間 492
26.3.1時間處理函數 493
26.3.2時間轉換函數 495
程序 顯示日期和時間 498
問與答 500
練習題 501
編程題 502
第27章c99對數學計算的新增支持 503
27.1(stdint.h):整數類型 503
27.1.1(stdint.h)類型 503
27.1.2對指定寬度整數類型的限制 504
27.1.3對其他整數類型的限制 505
27.1.4用於整數常量的宏 505
27.2(inttypes.h):整數類型的格式
轉換 506
27.2.1用於格式說明符的宏 506
27.2.2用於最大寬度整數類型的
函數 507
27.3復數 508
27.3.1復數的定義 508
27.3.2復數的算術運算 509
27.3.3c99中的復數類型 509
27.3.4復數的運算 510
27.3.5復數類型的轉換規則 510
27.4(complex.h):復數算術運算 511
27.4.1(complex.h)宏 511
27.4.2cx_limited_range編譯
提示 512
27.4.3(complex.h)函數 512
27.4.4三角函數 512
27.4.5雙曲函數 513
27.4.6指數函數和對數函數 514
27.4.7冪函數和絕對值函數 514
27.4.8操作函數 514
程序 求二次方程的根 515
27.5(tgmath.h):泛型數學 515
27.5.1泛型宏 516
27.5.2調用泛型宏 517
27.6(fenv.h):浮點環境 518
27.6.1浮點狀態標志和控制模式 518
27.6.2(fenv.h)宏 519
27.6.3fenv_access編譯提示 519
27.6.4浮點異常函數 520
27.6.5舍入函數 520
27.6.6環境函數 521
問與答 521
練習題 522
編程題 523
附錄ac語言運算符 524
附錄bc99與c89的比較 525
附錄cc89與經典c的比較 529
附錄d標准庫函數 532
附錄eascii字元集 569
參考文獻 570
索引 573

『伍』 C語言程序設計教程答案~有追加懸賞100分!

1 【C語言】《C語言程序設計教程(第二版)》習題答案

說 明
1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理
工大學出版社出版的,綠皮。

2 第1章 程序設計基礎知識
一、單項選擇題(第23頁)
1-4.CBBC 5-8.DACA

二、填空題(第24頁)
1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.演算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分

三、應用題(第24頁)
2.源程序:
main()
{int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */
printf("cock hen chick\n");
for(i=1;i<=20;i++)
for(j=1;j<=33;j++)
for(k=1;k<=33;k++)
if (i+j+k*3==100&&i*5+j*3+k==100)
printf(" %d %d %d\n",i,j,k*3);}
執行結果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.現計算斐波那契數列的前20項。
遞推法 源程序:
main()
{long a,b;int i;
a=b=1;
for(i=1;i<=10;i++) /*要計算前30項,把10改為15。*/
{printf("%8ld%8ld",a,b);
a=a+b;b=b+a;}}
遞歸法 源程序:
main()
{int i;
for(i=0;i<=19;i++)
printf("%8d",fib(i));}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2));}
執行結果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include "math.h";
main()
{double x,x0,deltax;
x=1.5;
do {x0=pow(x+1,1./3);
deltax=fabs(x0-x);
x=x0;
}while(deltax>1e-12);
printf("%.10f\n",x);}
執行結果:
1.3247179572
5.源程序略。(分子、分母均構成斐波那契數列)
結果是32.66026079864
6.源程序:
main()
{int a,b,c,m;
printf("Please input a,b and c:");
scanf("%d %d %d",&a,&b,&c);
if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d %d %d\n",a,b,c);}
執行結果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a;
scanf("%d",&a);
printf(a%21==0?"Yes":"No");}
執行結果:
42
Yes

3 第2章 C語言概述
一、單項選擇題(第34頁)
1-4.BDCB 5-8.AABC

二、填空題(第35頁)
1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 5.頭 6. .OBJ 7.庫函數 8.文本

三、應用題(第36頁)
5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標識符。
8.源程序:
main()
{int a,b,c;
scanf("%d %d",&a,&b);
c=a;a=b;b=c;
printf("%d %d",a,b);}
執行結果:
12 34
34 12

4 第3章 數據類型與運算規則
一、單項選擇題(第75頁)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空題(第77頁)
1.補碼 2.±(10^-308~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89

三、應用題(第78頁)
1.10 9
2.執行結果:
11
0
0
12
1

5 第4章 順序結構程序設計
一、單項選擇題(第90頁)
1-5.DCDAD 6-10.BACBB

二、填空題(第91頁)
1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種演算法不破壞b的值,也不用定義中間變數。)

三、編程題(第92頁)
1.仿照教材第27頁例2-1。
2.源程序:
main()
{int h,m;
scanf("%d:%d",&h,&m);
printf("%d\n",h*60+m);}
執行結果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}
執行結果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5;
printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}
執行結果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include "math.h";
main()
{double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{double s=(a+b+c)/2;
printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}
else printf("Data error!");}
執行結果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;
printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序:
main()
{int a,b,c,m;
scanf("%d %d %d",&a,&b,&c);
m=a;a=b;b=c;c=m;
printf("%d %d %d\n",a,b,c);}
執行結果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.);
執行結果:
6 7 9
average of 6,7 and 9 is 7.33
9.不能。修改後的源程序如下:
main()
{int a,b,c,x,y;
scanf("%d %d %d",&a,&b,&c);
x=a*b;y=x*c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
printf("x=%d,y=%d\n",x,y);}

6 第5章 選擇結構程序設計
一、單項選擇題(第113頁)
1-4.DCBB 5-8.DABD

二、填空題(第115頁)
1.非0 0 2.k==0
3.if (abs(x)>4) printf("%d",x);else printf("error!");
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);
5.k=1 (原題最後一行漏了個d,如果認為原題正確,則輸出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、編程題(第116頁)
1.有錯。正確的程序如下:
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a;
scanf("%ld",&a);
for(;a;printf("%d",a%10),a/=10);}
執行結果:
12345
54321
3.(1)源程序:
main()
{int x,y;
scanf("%d",&x);
if (x>-5&&x<0)y=x;
if (x>=0&&x<5)y=x-1;
if (x>=5&&x<10)y=x+1;
printf("%d\n",y);}
(2)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;
else y=x-1; else y=x;
printf("%d\n",y);}
(3)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>=5)y=x+1;
else if(x>=0)y=x-1;
else if(x>-5)y=x;
printf("%d\n",y);}
(4)源程序:
main()
{int x,y;
scanf("%d",&x);
switch(x/5)
{case -1:if(x!=-5)y=x;break;
case 0:y=x-1;break;
case 1:y=x+1;}
printf("%d\n",y);}
4.本題為了避免考慮每月的天數及閏年等問題,故採用面向對象的程序設計。
現給出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procere TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);
end;
procere TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1)
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
執行結果:(運行於Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:
main()
{unsigned a,b,c;
printf("請輸入三個整數:");
scanf("%d %d %d",&a,&b,&c);
if(a&&b&&c&&a==b&&a==c)printf("構成等邊三角形\n");
else if(a+b>c&&a+c>b&&b+c>a)
if(a==b||a==c||b==c)printf("構成等腰三角形\n");
else printf("構成一般三角形\n");
else printf("不能構成三角形\n");}
執行結果:
請輸入三個整數:5 6 5
構成等腰三角形
6.源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<20)y=1;
else switch(x/60)
{case 0:y=x/10;break;
default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n;
scanf("%d",&m);
if(m<100)n=0;
else if(m>600)n=0.06;
else n=(m/100+0.5)/100;
printf("%d %.2f %.2f\n",m,m*(1-n),m*n);}
執行結果:
450
450 429.75 20.25
8. 2171天(起始日期和終止日期均算在內)
本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入「生日」和「今日」欄內,單擊「實足年齡」按鈕,將所得到的天數再加上1天即可。
9.源程序:
#include "math.h";
main()
{unsigned long i;
scanf("%ld",&i);
printf("%ld %d\n",i%10,(int)log10(i)+1);}
執行結果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0;
scanf("%ld",&i);
for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)i=i*10+j[m-1];
printf("%ld\n",i);}
執行結果:
6987
8109
(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字元串而不能是整數。)

7 第6章 循環結構程序設計
一、單項選擇題(第142頁)
1-4.BCCB 5-8.CBCA

二、填空題(第143頁)
1.原題可能有誤。如無誤,是死循環 2.原題有誤。如果把b=1後面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin

三、編程題(第145頁)
1. 源程序:
main()
{int i=1,sum=i;
while(i<101){sum+=i=-i-2;sum+=i=-i+2;}
printf("%d\n",sum);}
執行結果:
51
2.源程序:
main()
{double p=0,n=0,f;int i;
for(i=1;i<=10;i++)
{scanf("%lf",&f);
if (f>0)p+=f; else n+=f;}
printf("%lf %lf %lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a;
scanf("%ld",&a);
for (;a;printf("%d,",a%10),a/=10);
printf("\b \n");}
執行結果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i;
scanf("%ld%ld",&a,&b);
c=a%1000;
for(i=1;i<b;i++)c=c*a%1000;
if(c<100)printf("0");
if(c<10)printf("0");
printf("%ld\n",c);}
執行結果:
129 57
009
5.略
6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …
(1)源程序:
main()
{double e=1,f=1;int n;
for(n=1;n<=20;n++){f/=n;e+=f;}
printf("e=%.14lf\n",e);}
執行結果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1;int n;
for(n=1;f>1e-4;n++){f/=n;e+=f;}
printf("e=%.4f\n",e);}
執行結果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0;int i,d;
scanf("%d",&d);
for (i=1;i<=(d+2)/3;i++)
printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}
本題還可以用遞歸演算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}
main()
{int i,d; scanf("%d",&d);
for(i=1;i<=d;i++)
printf("%10ld",fun(i));}
執行結果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i;
for(i=1010;i<=9876;i+=2)
if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i);}
執行結果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
9.源程序:
main()
{int i,j,k;
printf("apple watermelon pear\n");
for(i=1;i<=100;i++)
for(j=1;j<=10;j++)
if((k=100-i-j)*2==400-i*4-j*40)
printf("%4d%7d%9d\n",i,j,k);}
執行結果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include "stdio.h";
#define N 4 /* N為階數,可以改為其他正整數 */
main()
{int m=N*2,i,j;
for(i=1;i<m;printf("\n"),i++)
for(j=1;j<m;
putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}
如果把N值改為5,則執行結果如下:
*
***
*****
*******
*********
*******
*****
***
*

作者:寧西貫通 2006-5-7 23:41 回復此發言

--------------------------------------------------------------------------------

8 說明
注意:上面最後一題的輸出結果應該是由星號組成的一個菱形,

9 第7章 數 組
一、單項選擇題(第192頁)
1-4.BBCC 5-8.AABA

二、填空題(第194頁)
1.1
2
4
8
16
32
64
128
256
512
2. ①a[age]++ ②i=18;i<26
3. ①break ②i==8
4. ①a[i]>b[j] ②i<3 ③j<5
5. ①b[j]=a[j][0] ②b[j]<a[j][k] 6.a[k++]=a[j]

三、編程題(第196頁)
1.源程序:
main()
{int a[4][4],i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==j||i+j==3)s+=a[i][j];
printf("%d\n",s);} /* 注:5×5矩陣不能照此計算! */
執行結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
68
2. 源程序:
main()
{int i,a[36];
a[0]=2;
for(i=1;i<=29;i++)a[i]=a[i-1]+2;
for(;i<=35;i++)a[i]=a[(i-30)*5+2];
for(i=0;i<=35;i++)printf("%d\t",a[i]);}
執行結果:
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60
6 16 26 36 46 56
3. 源程序:
#include "stdlib.h"
#include "time.h"
main()
{int a[30],i,m=0;
randomize();
for(i=0;i<=29;i++)
{a[i]=rand();
if(m<a[i])m=a[i];
printf("%d\t",a[i]);}
for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;
printf("\n-----------------\n");
for(i=0;i<=29;i++)
if(~a[i])printf("%d\t",a[i]);
printf("\n");}
執行結果:
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
32499 29305 22340 5927 13031 2161 2583 31855 22977 14283
4851 22038 6992 11394 20887 27381 6293 18347 16414 10210
-----------------
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
29305 22340 5927 13031 2161 2583 31855 22977 14283 4851
22038 6992 11394 20887 27381 6293 18347 16414 10210
4.源程序:
main()
{int i,n=0,b[16];
scanf("%d",&i);
for(;i;i>>=1)b[n++]=i&1;
for(;n;)printf("%d",b[--n]);}
執行結果:
9876
10011010010100
本題也可以不用數組。源程序如下:
#include "stdio.h"
main()
{int i,n;
scanf("%d",&i);
for(n=16;n;n--)
{asm ROL i,1
putchar(i&1|48);}
} /* ROL是循環左移的匯編指令 */
5. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j,t[M];
randomize();
/*生成M行N列隨機數*/
for(i=0;i<M;printf("\n"),t[i++]=0)
for(j=0;j<N;j++)
printf("%4d",a[i][j]=random(50));
/*找出每行的最小數,t[M]是第M行的最小數所在的列數*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][t[i]]>a[i][j])t[i]=j;
/*比較每個最小數在其所在的列上是否也是最小*/
for(j=0;j<M;j++)
for(i=0;i<M;i++)
{if(i==j)continue;
if(a[j][t[j]]>a[i][t[j]])
{t[j]=-1;break;}
}
printf("-------------------\n");
/*輸出在行和列上均為最小的數*/
for(i=0;i<M;i++)
if(t[i]!=-1)
printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]]);
}
執行結果:
13 19 13 20 0 1
20 41 6 16 35 30
3 5 37 8 23 15
6 36 24 29 18 1
1 5 28 21 46 34
-------------------
a[0,4]=0
a[1,2]=6
a[3,5]=1
a[4,0]=1
6. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 7
main()
{int a[M][N],i,j,t=0;
randomize();
for(i=0;i<M;i++)
{a[i][N-1]=0;
for(j=0;j<N-1;j++)
{printf("%4d",a[i][j]=random(91)+10);
a[i][N-1]+=a[i][j];}
printf("%4d\n",a[i][N-1]);}
for(i=1;i<M;i++)
if(a[i][N-1]>a[t][N-1])t=i;
if(t)for(j=0;j<N;j++)
{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;}
printf("-----------------\n");
for(i=0;i<M;printf("\n"),i++)

10 第7章 數 組
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
89 17 32 95 35 20 288
39 48 22 27 73 22 231
51 87 39 71 84 46 378
84 94 97 77 27 26 405
69 50 56 89 37 46 347
-----------------
84 94 97 77 27 26 405
39 48 22 27 73 22 231
51 87 39 71 84 46 378
89 17 32 95 35 20 288
69 50 56 89 37 46 347
7. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j;
struct data{int value,x,y;}max,min;
max.value=0;min.value=100;
randomize();
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
{printf("%4d",a[i][j]=random(100)+1);
if(max.value<a[i][j])
{max.value=a[i][j];max.x=i;max.y=j;}
if(min.value>a[i][j])
{min.value=a[i][j];min.x=i;min.y=j;}
}
printf("-----------------\n");
i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;
i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
51 53 74 65 30 40
30 26 50 6 61 27
47 16 54 58 76 19
57 74 44 92 71 48
73 57 60 32 73 67
-----------------
51 53 74 65 30 92
30 26 50 73 61 27
47 16 54 58 76 19
57 74 44 40 71 48
6 57 60 32 73 67
9. 源程序:
main()
{char s[255];int i,j,b=1;
printf("Input a string:");
scanf("%s",s);
i=strlen(s);
for(j=1;j<=i/2;j++)
b=b&&(s[j-1]==s[i-j]);
printf(b?"Yes\n":"No\n");}
執行結果:
Input a string:level
Yes
10. 源程序:
main()
{char s[255],t,max=0,min=0,l,i;
printf("Input a string(length>4):");
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
{if(s[max]<s[i])max=i;if(s[min]>s[i])min=i;}
t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;
t=s[l-2];s[l-2]=s[min];s[min]=t;
printf("%s\n",s);}
執行結果:
Input a string(length>4):C++Builder
Cu+Beild+r
11. 源程序:
main()
{char m[13][10]={"****","January","February","March",
"April","May","June","July","August","September",
"October","November","December"};
int i,j,k,a,s,n;
printf("Please input an integer(100..999):");
scanf("%d",&n);
printf("%d:%d+%d+%d=%d, %d%%13=%d, %s\n", n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);}
執行結果:
Please input an integer(100..999):539
539:5+3+9=17, 17%13=4, April

11 第8章 函 數
一、單項選擇題(第241頁)
1-5.BCCAA 6-10.CCDDD 11-15.ACACB

二、填空題(第243頁)
1.看不出原題的意圖。因為要計算1~n的累加和,n應是一個≥1的正整數。可是題目中卻出現了n=0的情況。除非另加規定當n=0時1~n的累加和為0,或者把原題中的計算式改為計算0~n的累加和。據此猜測,原題應填為:①return(0) ②return(n+sum(n-1))
根據題意,如下程序較為合理:
int sum(int n)
{if(n<=0)return(-1); /* -1是出錯標志 */
else if(n==1)return(1);
else return(n+sum(n-1));}
2. ①return(1) ②return(n*facto(n-1))

三、編程題(第244頁)
3.源程序:
main()
{int i,a,b,c;
for(i=100;i<999;i++)
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)
printf("%d\t",i);}
執行結果:
153 370 371 407
8.源程序(非遞歸演算法):
#define P 13 /* P可以改為其他正整數 */
main()
{int a[P],r,c;
for(r=0;r<=P;r++)
{a[r]=1;
for(c=r-1;c>=1;a[c--]+=a[c-1]);
printf("%*d",(P-r)*3+1,a[0]);
for(c=1;c<=r;printf("%6d",a[c++]));
printf("\n");}
}
執行結果:
(應該排列成一個三角形,是貼吧造成現在這個樣子的,不是程序有問題)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
9.源程序(遞歸演算法):
#include "stdio.h"
void printOCT(unsigned long n)
{unsigned long i;
if(i=n>>3)printOCT(i);
putchar((n&7)+48);}
main()
{unsigned long i;
scanf("%ld",&i);
printOCT(i);}
執行結果:
1234567890
11145401322
本題也可以不用遞歸演算法,源程序請參考第7章第三題4。

12 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
但是不同時間印刷的版本課後題不太一樣呢,象我們的是1999年12月第2版,2005年12月第69次印刷的。沒有選擇填空,應用題和樓主不知道有多少相同的,因為看不到原題。這個比較麻煩呢。

作者:210.77.204.* 2006-5-9 18:38 回復此發言

--------------------------------------------------------------------------------

13 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
你對照一下主編和出版社,看看對嗎?(見說明的第一條。)
我不是說叫你有問題另發帖子嗎?

14 第9章 指 針
一、單項選擇題(第276頁)
1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空題(第278頁)
1.①int * ②*z
2.*p++
3.①'\0' ②++
4.①q=p+1 ②q<p+10 ③*q>max ④*q<min

三、編程題(第280頁)
7.源程序:
main()
{int i=0;char c[20];
do{scanf("%s",&c);i++;}
while(strcmp(c,"stop"));
printf("%d\n",i);}
執行結果:
This car ran form Nanyang
to Luoyang without a stop
10
9.源程序:
main()
{char s[255],c[255]={0};int i;
gets(s);
for(i=0;s[i];c[s[i++]]++);
for(i=0;i<255;i++)
if(c[i])printf("%c=%d\t",i,c[i]);}
執行結果:
abcedabcdcd
a=2 b=2 c=3 d=3 e=1

『陸』 c語言程序設計:現代方法 第二版p44中有一段語句: i = 2; j = i*i++; 的問題。

別聽他們胡說 書上說得對 未定義行為指 在表達式[兩個順序點之間]裡面 多次修改同行此一個變數

用編譯器得到同樣的結果也說明不了什麼
i*i++ 是這樣的做法
那麼編譯器怎麼實現就不好說了

原文
C語言標准明確說過:
Undefined behavior:
Between two sequence points, an object is modified more than once, or is modified and the prior value is read other than to determine the value to be stored (6.5).

譯文
在序列點間
多次修改同一個對象(i=++i/++i + ++i/ i++ + ++i/...)
除當前修改的需要存儲的值的以外再讀取該值(i+i++/++i*i/...)
或者說在修改的同時在別的表達式中再用這個對象
是未定義的行為

i*i++
可以對應 在序列點之間 在當前修改姿帶漏需要存儲的值以外再讀取該值 後面的例子 有跡爛
i+i++
這個和你的i*i++ 雷同

『柒』 C語言程序設計:現代方法:第2版的作者

K. N. King 世界知名的計算機程序設計教育家,現為喬治亞州立大學數學與計算機科學系副教授。他擁有耶魯大學計算機科學碩士學位,加州大學伯克利分校計算機科學博士學位,曾任教於喬治亞理工學院。除本書外,他還撰寫了廣受歡迎的著作Mola-2: A Complete Guide 和Java Programming: From the Beginning,並在Dr.Dobb's Journal等權威雜志上發表了許多文章。業余時間,King教授還在多部電影中扮演過角色。
呂秀鋒 亞洲理工大學( AIT )計算機軟體碩士,現為北京理工大學軟體學院教師。

熱點內容
ps腳本批量處理切圖 發布:2025-02-08 04:19:03 瀏覽:56
iisftp命令 發布:2025-02-08 04:04:39 瀏覽:455
安卓為什麼軟體老更新 發布:2025-02-08 03:53:40 瀏覽:735
演算法實際應用 發布:2025-02-08 03:53:07 瀏覽:535
c語言加密文本 發布:2025-02-08 03:47:50 瀏覽:681
安卓打字鍵盤的聲音在哪裡調 發布:2025-02-08 03:42:27 瀏覽:32
c實現c編譯器 發布:2025-02-08 03:42:26 瀏覽:661
愛貓編程 發布:2025-02-08 03:40:52 瀏覽:588
劍網3解壓包 發布:2025-02-08 03:40:51 瀏覽:684
伺服器ip被電信封了 發布:2025-02-08 03:35:51 瀏覽:348