c語言現代方法pdf
Ⅰ 《c語言參考手冊原書第五版》pdf下載在線閱讀全文,求百度網盤雲資源
《c語言參考手冊原書第五版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1PhXbkkQU-mOG5XHWgX-X9A
簡介:c語言參考手冊第五版涵蓋了傳統C語言、C89,C95.C99等所有C語言版本的實現,同時討論了C++與C語言兼容的部分。全書自上而下介紹了C語言的詞法結構、預處理器、聲明、類型表達式、語句、函數和運行庫,是所有C語言編程人員必備的參考書。
Ⅱ K.N.King著,C語言程序設計:現代方法(第2版),人民郵電出版社,2010求這本書的電子版,感激不盡
郵箱呢?把郵箱發過來吧
Ⅲ 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語言程序設計現代方法第二版》全文免費下載百度網盤資源,謝謝~
《C語言程序設計現代方法第二版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1ZxPIF7PSVBGWtDl8h_kjNA
簡介:時至今日,C語言仍然是計算機領域的通用語言之一,但今天的C語言已經和初的時候大不相同了。本書主要的一個目的就是通過一種「現代方法」來介紹C語言,書中強調標准C,強調軟體工程,不再強調「手工優化」。這一版中緊密結合了C99標准,並與C89標准進行對照,補充了C99中的全新特性。本書分為C語言的基礎特性、C語言的高級特性、C語言標准庫和參考資料4個部分。每章末尾都有一個「問與答」小節給出一系列與該章內容相關的問題及答案,此外還包含適量的習題。
《C語言程序設計:現代方法(第2版)》是為大學本科階段的C語言課程編寫的教材,同時也非常適合作為其他課程的輔助用書。
Ⅳ 《C語言程序設計現代方法》 電子文本 或者稱 非掃描版
首先不了解匯編語言就等於沒學編程語言。得了解匯編語言,推薦王爽《匯編語言》前兩章;如果想更進一步了解計算機,推薦《穿越計算機的迷霧》下本電子書,兩天看完就行。這是歷史性的東西。然後買本或者復印本國外的著名教材,比如《C語言程序設計現代方法》,看書的時候多寫程序,思考怎麼用計算機編程解決一些問題,然後具體去寫一些程序。寫程序的時候要思維活躍一些,不是說書上不讓做的就一定不去做,越是書上不讓做的,越要試一試,有著自由的精神。然後呢,如果你不滿足於現狀,可以去了解一些面向對象的知識,演算法的知識,還有數理邏輯的一些玩意。國內C語言,做題僅僅是為了復習基本的語法知識,做一點就行,重要的是得多思考問題。
Ⅵ 《c語言開發手冊》pdf下載在線閱讀全文,求百度網盤雲資源
《c語言開發手冊》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1x73yFxA3h3-GLQ_eJ_kAFQ
簡介:本書對現代c語言程序的介面和高級技術進行了全面講解,對具有一定開發經驗的設計人員也有非常好的參考價值。本書可以作為c語言初學者的入門教材,也可作為c語言程序員的參考手冊,還可作為大中專院校學生及電腦培訓班的參考書。
Ⅶ 跪求 C語言程序設計.現代方法.txt
這是我用的,我同學做的,我也沒仔細看,如果可以的話就用這個吧。
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜單,輸入4,回車
按提示插入一組數據
7、回到主菜單,輸入5,回車
按提示輸入姓名,刪除數據
出現刪除成功的信息
8、回到主菜單,輸入6,回車
輸入姓名進行查詢
9、回到主菜單,輸入7,回車
出現統計信息
10、回到主菜單,輸入9,回車
輸入result.txt,回車
出現成功寫入文件的信息
11、回到主菜單,輸入0,回車退出系統
Ⅷ 哪有c語言教程,好點的,謝謝。
關於c語言教程清華大學出版社的譚浩強版的《C語言程序設計》不錯,應該是學習C語言的入門經典書!強烈推薦!!
其它的c語言教程這些也不錯,自己把這些c語言教程下載來好好研究一下吧:
21天學通C語言
《C語言精彩編程百例》清晰PDF電子書和源代碼
C語言程序設計視頻教程--徐紅波
C語言程序設計:現代方法 中文高清PDF下載
好好研究一下,不錯的教程:http://blog.sina.com.cn/s/blog_60df34f90100gyff.html
Ⅸ 《c語言大全第四版》pdf下載在線閱讀全文,求百度網盤雲資源
《c語言大全第四版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1LmgEEVCF50P5hrawTrZh1g
簡介:C語言大全第四版詳細討論了C語言及其函數庫的各個方面,主要強調ANS/ISO標準的C語言內容涵蓋了C89和C99。
Ⅹ 《C語言入門經典第五版》pdf下載在線閱讀全文,求百度網盤雲資源
《C語言入門經典第五版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1VIVxkyi7xB-jgU-RnXQuHQ
簡介:C語言是每一位程序員都應該掌握的基礎語言。C語言是微軟.NET編程中使用的C#語言的基礎;C語言是iPhone、iPad和其他蘋果設備編程中使用的Objective-C語言的基礎;C語言是在很多環境中(包括GNU項圈)被廣泛使用的C++語言的基礎。C語言也是Linux操作系統及其很多功能的基礎。學習C語言可以給編程職業生涯提供牢固的基礎,也有助於更好地理解更為現代的語言(如Java)。
《C語言入門經典(第5版)》主要介紹基礎的計算機語言之一——C語言。
《C語言入門經典(第5版)》從基礎的內容開始,步步深入講解作為一位稱職的C語言程序員應該具備的知識和技能。