图书介绍
C语言程序设计:现代方法PDF|Epub|txt|kindle电子书版本网盘下载
![C语言程序设计:现代方法](https://www.shukui.net/cover/64/33205985.jpg)
- (美)K.N.King编著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115219572
- 出版时间:2010
- 标注页数:600页
- 文件大小:169MB
- 文件页数:619页
- 主题词:C语言-程序设计
PDF下载
下载说明
C语言程序设计:现代方法PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第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.8 C程序的书写规范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中的布尔值C9958
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语句C9975
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中的整数类型C9990
7.1.2整数常量90
7.1.3C99中的整数常量C9991
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中的隐式转换C99103
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指定初始化式C99116
程序 检查数中重复出现的数字116
8.1.4对数组使用sizeof运算符117
程序 计算利息118
8.2多维数组119
8.2.1多维数组初始化120
8.2.2常量数组121
程序 发牌121
8.3C99中的变长数组C99122
问与答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变长数组形式参数C99140
9.3.4在数组参数声明中使用staticC99141
9.3.5复合字面量C99141
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指向复合常量的指针C99186
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中的指针和变长数组C99193
问与答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中新增的预定义宏C99235
14.3.10空的宏参数C99236
14.3.11参数个数可变的宏C99236
14.3.12_func_标识符C99237
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运算符C99242
问与答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.1makefile260
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指定初始化C99269
16.1.4对结构的操作270
16.2结构类型270
16.2.1结构标记的声明271
16.2.2结构类型的定义272
16.2.3结构作为参数和返回值272
16.2.4复合字面量C99273
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受限指针C99318
17.9灵活数组成员C99319
问与答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内联函数C99337
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>:布尔类型和值C99381
问与答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...pr int f转换说明393
22.3.3C99对...printf转换说明的修改C99395
22.3.4...print f转换说明示例396
22.3.5...scanf函数398
22.3.6...scanf格式串398
22.3.7...scanf转换说明398
22.3.8C99对...scanf转换说明的改变C99400
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)C99425
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和longjmp452
问与答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通用字符名C99467
25.5<wchar.h>:扩展的多字节和宽字符实用工具C99467
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>:宽字符分类和映射实用工具C99477
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函数C99485
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>:整数类型C99503
27.1.1<stdint.h>类型503
27.1.2对指定宽度整数类型的限制504
27.1.3对其他整数类型的限制505
27.1.4用于整数常量的宏505
27.2<inttypes.h>:整数类型的格式转换C99506
27.2.1用于格式说明符的宏506
27.2.2用于最大宽度整数类型的函数507
27.3复数C99508
27.3.1复数的定义508
27.3.2复数的算术运算509
27.3.3C99中的复数类型509
27.3.4复数的运算510
27.3.5复数类型的转换规则510
27.4<complex.h>:复数算术运算C99511
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>:泛型数学C99515
27.5.1泛型宏516
27.5.2调用泛型宏517
27.6<fenv.h>:浮点环境C99518
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
附录A C语言运算符524
附录B C99与C89的比较525
附录C C89与经典C的比较529
附录D 标准库函数532
附录E ASCII字符集569
参考文献570
索引573