c语言入门经典(第5版)
文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734
文件大小:126MB
C语言入门经典(第5版) 内容简介:
C语言是每一位程序员都应该掌握的基础语言。C语言是微软.NET编程中使用的C#语言的基础;C语言是iPhone、iPad和其他苹果设备编程中使用的Objective-C语言的基础;C语言是在很多环境中(包括GNU项目)被广泛使用的C++语言的基础。C语言也是Linux操作系统及其很多功能的基础。学习C语言可以给编程职业生涯提供牢固的基础,也有助于更好地理解更为现代的语言(如Java)。
《C语言入门经典(第5版)》主要介绍最基础的计算机语言之一——C语言。
《C语言入门经典(第5版)》从最基础的内容开始,步步深入讲解作为一位称职的C语言程序员应该具备的知识和技能。
主要内容
◆ 阐述C语言的核心特征,例如循环和分支
◆ 如何使用指针和指令动态管理内存
◆ 如何使用头文件和函数模块化代码
◆ 程序如何通过键盘、显示器和数据文件读写数据
◆ 如何通过预处理命令在编译时优化代码
◆ 如何使用结构有效地管理输入数据
《C语言入门经典(第5版)》完整地介绍了一个C应用程序的开发过程,这样你在阅读过程中可以结合实际的应用场景提高编程技能。书中的样例提供了实验的基础,可以通过修改其中的部分代码来对比前后程序运行的结果。后面的练习题用来测试对新知识、新技能的掌握情况,如果需要练习题答案,可以网上下载。
阅读完本书,你应该有能力和信心开发自己的C应用程序,并且具备在大型项目中应用C语言思想的技能。第5版详细介绍了C语言的最新国际标准,并且修订涵盖了语言编译器新支持的C11功能。
C语言入门经典(第5版) 目录:
第1章 C语言编程 1
1.1 C语言 1
1.2 标准库 2
1.3 学习C 2
1.4 创建C程序 2
1.4.1 编辑 2
1.4.2 编译 3
1.4.3 链接 4
1.4.4 执行 4
1.5 创建第一个程序 5
1.6 编辑第一个程序 5
1.7 处理错误 6
1.8 剖析一个简单的程序 7
1.8.1 注释 7
1.8.2 预处理指令 8
1.8.3 定义main()函数 9
1.8.4 关键字 10
1.8.5 函数体 10
1.8.6 输出信息 11
1.8.7 参数 11
1.8.8 控制符 11
1.8.9 三字母序列 13
1.9 预处理器 14
1.10 用C语言开发程序 14
1.10.1 了解问题 14
1.10.2 详细设计 15
1.10.3 实施 15
1.10.4 测试 15
1.11 函数及模块化编程 16
1.12 常见错误 19
1.13 要点 19
1.14 小结 20
1.15 习题 20
第2章 编程初步 21
2.1 计算机的内存 21
2.2 什么是变量 23
2.3 存储整数的变量 24
2.3.1 变量的使用 28
2.3.2 变量的初始化 29
2.4 变量与内存 36
2.4.1 带符号的整数类型 36
2.4.2 无符号的整数类型 37
2.4.3 指定整数常量 37
2.5 使用浮点数 39
2.6 浮点数变量 41
2.6.1 使用浮点数完成除法运算 42
2.6.2 控制输出中的小数位数 43
2.6.3 控制输出的字段宽度 43
2.7 较复杂的表达式 44
2.8 定义命名常量 46
2.8.1 极限值 49
2.8.2 sizeof运算符 51
2.9 选择正确的类型 52
2.10 强制类型转换 55
2.10.1 自动转换类型 56
2.10.2 隐式类型转换的规则 56
2.10.3 赋值语句中的隐式类型转换 57
2.11 再谈数值数据类型 58
2.11.1 字符类型 58
2.11.2 字符的输入输出 59
2.11.3 枚举 62
2.11.4 存储布尔值的变量 64
2.12 赋值操作的op=形式 65
2.13 数学函数 66
2.14 设计一个程序 67
2.14.1 问题 68
2.14.2 分析 68
2.14.3 解决方案 70
2.15 小结 73
2.16 练习 74
第3章 条件判断 75
3.1 判断过程 75
3.1.1 算术比较 75
3.1.2 基本的if语句 76
3.1.3 扩展if语句:if-else 79
3.1.4 在if语句中使用代码块 82
3.1.5 嵌套的if语句 83
3.1.6 测试字符 85
3.1.7 逻辑运算符 88
3.1.8 条件运算符 91
3.1.9 运算符的优先级 94
3.2 多项选择问题 98
3.2.1 给多项选择使用else-if语句 98
3.2.2 switch语句 99
3.2.3 goto语句 107
3.3 按位运算符 108
3.3.1 按位运算符的op=用法 110
3.3.2 使用按位运算符 111
3.4 设计程序 114
3.4.1 问题 114
3.4.2 分析 114
3.4.3 解决方案 114
3.5 小结 118
3.6 练习 118
第4章 循环 119
4.1 循环 119
4.2 递增和递减运算符 120
4.3 for循环 120
4.4 for循环的一般语法 124
4.5 再谈递增和递减运算符 125
4.5.1 递增运算符 125
4.5.2 递增运算符的前置和后置形式 125
4.5.3 递减运算符 126
4.6 再论for循环 127
4.6.1 修改for循环变量 129
4.6.2 没有参数的for循环 129
4.6.3 循环内的break语句 130
4.6.4 使用for循环限制输入 132
4.6.5 生成伪随机整数 135
4.6.6 再谈循环控制选项 137
4.6.7 浮点类型的循环控制变量 137
4.7 while循环 138
4.8 嵌套循环 140
4.9 嵌套循环和goto语句 146
4.10 do-while循环 147
4.11 continue语句 149
4.12 设计程序 150
4.12.1 问题 150
4.12.2 分析 150
4.12.3 解决方案 151
4.13 小结 162
4.14 习题 163
第5章 数组 165
5.1 数组简介 165
5.1.1 不用数组的程序 165
5.1.2 什么是数组 167
5.1.3 使用数组 168
5.2 寻址运算符 171
5.3 数组和地址 173
5.4 数组的初始化 174
5.5 确定数组的大小 175
5.6 多维数组 176
5.7 多维数组的初始化 178
5.8 变长数组 184
5.9 设计一个程序 186
5.9.1 问题 186
5.9.2 分析 186
5.9.3 解决方案 187
5.10 小结 193
5.11 习题 193
第6章 字符串和文本的应用 195
6.1 什么是字符串 195
6.2 存储字符串的变量 197
6.3 字符串操作 202
6.3.1 检查对C11的支持 202
6.3.2 确定字符串的长度 203
6.3.3 复制字符串 204
6.3.4 连接字符串 204
6.3.5 比较字符串 208
6.3.6 搜索字符串 211
6.3.7 单元化字符串 215
6.3.8 将换行符读入字符串 219
6.4 分析和转换字符串 221
6.4.1 转换字符的大小写形式 223
6.4.2 将字符串转换成数值 225
6.5 设计一个程序 227
6.5.1 问题 227
6.5.2 分析 227
6.5.3 解决方案 228
6.6 小结 233
6.7 习题 233
第7章 指针 235
7.1 指针初探 235
7.1.1 声明指针 236
7.1.2 通过指针访问值 237
7.1.3 使用指针 240
7.1.4 指向常量的指针 244
7.1.5 常量指针 244
7.1.6 指针的命名 245
7.2 数组和指针 245
7.3 多维数组 248
7.3.1 多维数组和指针 252
7.3.2 访问数组元素 253
7.4 内存的使用 256
7.4.1 动态内存分配:malloc()函数 256
7.4.2 释放动态分配的内存 257
7.4.3 用calloc()函数分配内存 261
7.4.4 扩展动态分配的内存 262
7.5 使用指针处理字符串 265
7.5.1 使用指针数组 266
7.5.2 指针和数组记号 272
7.6 设计程序 276
7.6.1 问题 276
7.6.2 分析 277
7.6.3 解决方案 277
7.7 小结 284
7.8 习题 285
第8章 编程的结构 287
8.1 程序的结构 287
8.1.1 变量的作用域和生存期 288
8.1.2 变量的作用域和函数 291
8.2 函数 291
8.2.1 定义函数 291
8.2.2 return语句 294
8.3 按值传递机制 299
8.4 函数原型 300
8.5 指针用作参数和返回值 301
8.5.1 常量参数 302
8.5.2 返回指针的风险 307
8.6 小结 310
8.7 习题 310
第9章 函数再探 313
9.1 函数指针 313
9.1.1 声明函数指针 313
9.1.2 通过函数指针调用函数 314
9.1.3 函数指针的数组 316
9.1.4 作为变元的函数指针 319
9.2 函数中的变量 321
9.2.1 静态变量:函数内部的追踪 321
9.2.2 在函数之间共享变量 323
9.3 调用自己的函数:递归 325
9.4 变元个数可变的函数 328
9.4.1 复制va_list 331
9.4.2 长度可变的变元列表的基本规则 331
9.5 main()函数 332
9.6 结束程序 333
9.6.1 abort()函数 333
9.6.2 exit()和atexit()函数 333
9.6.3 _Exit()函数 334
9.6.4 quick_exit()和at_quick_exit()函数 334
9.7 提高性能 335
9.7.1 内联声明函数 335
9.7.2 使用restrict关键字 335
9.7.3 _Noreturn函数限定符 336
9.8 设计程序 336
9.8.1 问题 336
9.8.2 分析 337
9.8.3 解决方案 338
9.9 小结 351
9.10 习题 352
第10章 基本输入和输出操作 353
10.1 输入和输出流 353
10.2 标准流 354
10.3 键盘输入 354
10.3.1 格式化键盘输入 355
10.3.2 输入格式控制字符串 355
10.3.3 输入格式字符串中的字符 360
10.3.4 输入浮点数的各种变化 362
10.3.5 读取十六进制和八进制值 363
10.3.6 用scanf_s()读取字符 364
10.3.7 从键盘上输入字符串 366
10.3.8 单个字符的键盘输入 367
10.4 屏幕输出 372
10.4.1 使用printf_s()的格式化输出 372
10.4.2 转义序列 375
10.4.3 整数输出 375
10.4.4 输出浮点数 378
10.4.5 字符输出 379
10.5 其他输出函数 380
10.5.1 屏幕的非格式化输出 381
10.5.2 数组的格式化输出 381
10.5.3 数组的格式化输入 382
10.6 小结 382
10.7 习题 383
第11章 结构化数据 385
11.1 数据结构:使用struct 385
11.1.1 定义结构类型和结构变量 387
11.1.2 访问结构成员 388
11.1.3 未命名的结构 390
11.1.4 结构数组 391
11.1.5 表达式中的结构成员 393
11.1.6 结构指针 393
11.1.7 为结构动态分配内存 394
11.2 再探结构成员 397
11.2.1 将一个结构作为另一个结构的成员 397
11.2.2 声明结构中的结构 398
11.2.3 将结构指针用作结构成员 399
11.2.4 双向链表 403
11.2.5 结构中的位字段 406
11.3 结构与函数 407
11.3.1 结构作为函数的变元 407
11.3.2 结构指针作为函数变元 408
11.3.3 作为函数返回值的结构 409
11.3.4 二叉树 414
11.4 共享内存 421
11.5 设计程序 425
11.5.1 问题 425
11.5.2 分析 426
11.5.3 解决方案 426
11.6 小结 438
11.7 习题 438
第12章 处理文件 441
12.1 文件的概念 441
12.1.1 文件中的位置 442
12.1.2 文件流 442
12.2 文件访问 442
12.2.1 打开文件 443
12.2.2 缓存文件操作 445
12.2.3 文件重命名 446
12.2.4 关闭文件 447
12.2.5 删除文件 447
12.3 写入文本文件 448
12.4 读取文本文件 449
12.5 在文本文件中读写字符串 452
12.6 格式化文件的输入输出 456
12.6.1 格式化文件输出 456
12.6.2 格式化文件输入 457
12.7 错误处理 459
12.8 再探文本文件操作模式 460
12.9 freopen_s()函数 461
12.10 二进制文件的输入输出 462
12.10.1 以二进制模式打开文件 462
12.10.2 写入二进制文件 463
12.10.3 读取二进制文件 464
12.11 在文件中移动 469
12.11.1 文件定位操作 469
12.11.2 找出我们在文件中的位置 470
12.11.3 在文件中设定位置 471
12.12 使用临时文件 477
12.12.1 创建临时文件 477
12.12.2 创建唯一的文件名 478
12.13 更新二进制文件 479
12.13.1 修改文件的内容 484
12.13.2 从键盘输入创建记录 485
12.13.3 将记录写入文件 486
12.13.4 从文件中读取记录 486
12.13.5 写入文件 487
12.13.6 列出文件内容 488
12.13.7 更新已有的文件内容 489
12.14 文件打开模式小结 495
12.15 设计程序 496
12.15.1 问题 496
12.15.2 分析 496
12.15.3 解决方案 496
12.16 小结 501
12.17 习题 501
第13章 支持功能 503
13.1 预处理 503
13.1.1 在程序中包含头文件 503
13.1.2 定义自己的头文件 504
13.1.3 管理多个源文件 504
13.1.4 外部变量 505
13.1.5 静态函数 505
13.1.6 替换程序源代码 506
13.2 宏 507
13.2.1 看起来像函数的宏 507
13.2.2 字符串作为宏参数 509
13.2.3 在宏展开式中结合两个变元 510
13.3 多行上的预处理器指令 510
13.3.1 预处理器逻辑指令 511
13.3.2 条件编译 511
13.3.3 测试多个条件 512
13.3.4 取消定义的标识符 512
13.3.5 测试标识符的指定值的指令 512
13.3.6 多项选择 513
13.3.7 标准预处理宏 514
13.4 调试方法 515
13.4.1 集成的调试器 515
13.4.2 调试阶段的预处理器 515
13.4.3 断言 519
13.5 日期和时间函数 521
13.5.1 获取时间值 522
13.5.2 获取日期 525
13.5.3 确定某一天是星期几 529
13.6 小结 531
13.7 习题 531
第14章 高级专用主题 533
14.1 使用国际字符集 533
14.1.1 理解Unicode 533
14.1.2 设置区域 534
14.1.3 宽字符类型wchar_t 535
14.1.4 宽字符串的操作 537
14.1.5 宽字符的文件流操作 540
14.1.6 存储Unicode字符的固定大小类型 541
14.2 用于可移植性的专用整数类型 545
14.2.1 固定宽度的整型 545
14.2.2 最小宽度的整型 545
14.2.3 最大宽度的整型 546
14.3 复数类型 546
14.3.1 复数基础 546
14.3.2 复数类型和操作 547
14.4 用线程编程 550
14.4.1 创建线程 550
14.4.2 退出线程 551
14.4.3 把一个线程连接到另一个线程上 552
14.4.4 挂起线程 555
14.4.5 管理线程对数据的访问 555
14.5 小结 561
附录A 计算机中的数学知识 563
附录B ASCII字符代码定义 571
附录C C语言中的保留字 575
附录D 输入输出格式说明符 577
附录E 标准库头文件 583
c语言入门经典(第5版)的更多相关文章
- C语言学习书籍推荐《C语言入门经典(第4版)》
霍顿 (Ivor Horton) (作者), 杨浩 (译者) <C语言入门经典(第4版)>的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员.读者基本不需要具备任何编程知识, ...
- C语言学习书籍推荐《C语言入门经典(第5版)》下载
霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...
- 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)
<C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...
- HTML与CSS入门经典(第9版)试读 附随书源码 pdf扫描版
HTML与CSS入门经典(第9版)是经典畅销图书<HTML与CSS入门经典>的最新版本,与过去的版本相同,本书采用直观.循序渐进的方法,为读者讲解使用HTML5与CSS3设计.创建并维护世 ...
- C语言入门经典书目推荐--转
国内良莠不齐的C语言教程数不胜数,同名如"C程序设计""C语言程序设计""C语言程序设计教程"的都多如牛毛,这些不知名的就不予考虑了,要看就 ...
- C链表-C语言入门经典例题
struct student { long num; float score; struct student *next; }; 注意:只是定义了一个struct student类型,并未实际分配存储 ...
- c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...
- 【转】c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码 初级:C语言入门必备 (以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言 ...
- Perl语言入门(中文版)(第6版) 东南大学出版社
第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? ...
随机推荐
- java基础学习总结——数组
一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的元素可以是任何数据类型,包括基 ...
- springboot-线程池简单使用
最近做项目,关于订单创建时候因为需要调用远程http服务获取数据,然后校验并写入数据库和修改数据库, 导致接口效率低,所以想到实现异步操作的方式解决. 在调用远程接口成功的时候即认为接口处理成功,返回 ...
- NGUI 3.5教程(一)安装NGUI 3.5.8
写在前面: 网上找的NGUI教程,都是基于2.x版本号的.为了能配合教程学着做,我也是下载了各种NGUI 2.x版本号.可是在导入的时候,或多或少都报错(我用的Unity 的版本号是4.3.2).无奈 ...
- 《Windows核心编程》第七章——进程优先级实验
其实就是做个实验,看看SetPriorityClass是否真的会生效. 设计思路:主线程一直在进行某种操作(这里是写文件操作),以保证有一定的CPU占用率:生成的子线程来接收你的命令,决定将进程改变为 ...
- Maven中<dependencies>节点和<dependencyManagement>节点的区别
dependencyManagement只是插件管理,并不是真正的插件依赖,所以里面包含的插件在没有子项目使用的时候,并不会真正下载 1 .使用项目继承 利用项目继承可以将结构信息,部署信息,共同的依 ...
- Endianess(字节次序)简介
1. 基础 在解释Endianess前,需要先明白几个基础定义 1) 数据的高位与低位是什么 以1001001为例,则从左边算起是 高位 -> 低位, 简而言之就是左边是高位,右边是低位 而内存 ...
- 【BZOJ】【2752】【HAOI2012】高速公路(Road)
数学期望/线段树 然而又是一道road= =上一道是2750…… 下次不要一看期望题就弃疗么…… 期望题≠不可做题……!! 其实在这题中,期望就是(所有情况下 权值之和)/(总方案数) 因为是等概率抽 ...
- [5] 柱台(Cylinder)图形的生成算法
顶点数据的生成 bool YfBuildCylinderVertices ( Yreal topRadius, Yreal bottomRadius, Yreal height, Yuint slic ...
- Informatica 常用组件Expression之二 创建EXP组件
在 Mapping Designer 中选择"转换-创建".选择表达式转换.为它输入一个名称(惯例为 EXP_TransformationName)并单击"确定" ...
- Windows Server上iSCSI的Best Practices
Installing and Configuring Microsoft iSCSI Initiator http://technet.microsoft.com/en-us/library/ee33 ...