新書推薦:
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:NT$
449.0
《
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
》
售價:NT$
280.0
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:NT$
349.0
《
人生解忧:佛学入门四十讲
》
售價:NT$
490.0
《
浪潮将至
》
售價:NT$
395.0
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:NT$
260.0
《
日内交易与波段交易的资金风险管理
》
售價:NT$
390.0
《
自然信息图:一目了然的万物奇观
》
售價:NT$
640.0
編輯推薦:
畅销全球20余年
中文版累计销量过50000册
C语言初学者的轻量级教程
针对C11标准和C标准库全面更新
提供本书所有源代码下载
內容簡介:
《21天学通C语言(第7版)》是初学者学习C语言的经典教程。本版按新的C11标准(ISO IEC9899:2011),以循序渐进的方式介绍了C语言编程方面的知识,并提供了丰富的实例和大量的练习。通过学习实例,并将所学的知识用于完成练习,读者将逐步了解、熟悉并精通C语言。
《21天学通C语言(第7版)》总共分为4部分,第 1部分是C语言基础,介绍了C语言的组成、变量、常量、语句、表达式、运算符、函数和循环、信息读写;第 2部分介绍了数组、指针、字符和字符串、结构、联合、TypeDef、变量作用域、高 级程序控制、输入 输出等;第3部分介绍了指针、磁盘文件、字符串操纵、函数库、内存管理以及编译器的高 级用法等;第4部分是附录,介绍了ASCII表、C C中的关键字、常用函数,以及习题答案等内容。
《21天学通C语言(第7版)》针对初中级程序员编写,可作为学习C语言的教程或参考资料。
關於作者:
Bradley L. Jones,Developer.com网站的管理者,负责管理Developer.com、CodeGuru和DevX等网站,有使用C、C#、C、SQL Sever、PowerBuilder、Visual Basic、HTML5等开发系统的经验。他的推特是@BradleyLJones。
Peter Aitken,杜克大学医学中心的职员,把编程技术应用到牙齿计算机开发程序研究中。他是IT领域应用与编程方面作家,在计算机杂志上发表文章70多篇,编写图书40多本。Aitken目前是制药工程方面的顾问。
Dean Miller,在出版和授权消费产品业务方面有20多年经验的作者兼编辑。期间,他策划并推出了大量畅销书籍和系列,包括Teach Yourself in 21 Days、Teach Yourself in 24 Hours以及Unleashed系列,这些都由Sam出版社出版。
目錄 :
目 录
第 1部分 C语言基础
第 1课 初识C语言 1
1.1 C语言发展简史 1
1.2 为何要使用C语言 1
1.3 准备编程 2
1.4 程序开发周期 3
1.4.1 创建源代码 3
1.4.2 使用编辑器 3
1.4.3 编译源代码 4
1.4.4 链接以创建可执行文件 4
1.4.5 完成开发周期 5
1.5 第 1个C程序 6
1.5.1 输入并编译hello.c 7
1.5.2 编译错误 8
1.5.3 链接器错误消息 9
1.6 小结 9
1.7 答疑 9
1.8 课后研习 10
1.8.1 小测验 10
1.8.2 练习题 11
第 2课 C程序的组成部分 12
2.1 简短的C程序 12
2.2 程序的组成部分 13
2.2.1 main函数 13
2.2.2 #include和#define指令 13
2.2.3 变量定义 14
2.2.4 函数原型 14
2.2.5 程序语句 14
2.2.6 函数定义 15
2.2.7 程序的注释 15
2.2.8 使用花括号 16
2.2.9 运行程序 16
2.2.10 补充说明 16
2.3 学以致用 17
2.4 小结 18
2.5 答疑 19
2.6 课后研习 19
2.6.1 小测验 19
2.6.2 练习题 19
第3课 储存信息:变量和常量 21
3.1 计算机的内存 21
3.2 用变量储存信息 22
3.3 数值类型 23
3.3.1 变量声明 26
3.3.2 typedef关键字 26
3.3.3 初始化变量 26
3.4 常量 27
3.4.1 字面常量 27
3.4.2 符号常量 28
3.5 小结 31
3.6 答疑 32
3.7 课后研习 32
3.7.1 小测验 32
3.7.2 练习题 33
第4课 语句、表达式和运算符 34
4.1 语句 34
4.1.1 在语句中留白 34
4.1.2 创建空语句 35
4.1.3 复合语句 35
4.2 理解表达式 36
4.2.1 简单表达式 36
4.2.2 复杂表达式 36
4.3 运算符 37
4.3.1 赋值运算符 37
4.3.2 数学运算符 37
4.3.3 运算符优先级和圆括号 41
4.3.4 子表达式的计算顺序 43
4.3.5 关系运算符 43
4.4 if语句 44
4.5 对关系表达式求值 49
4.6 逻辑运算符 51
4.7 详议真 假值 52
4.7.1 运算符的优先级 52
4.7.2 复合赋值运算符 54
4.7.3 条件运算符 54
4.7.4 逗号运算符 55
4.8 运算符优先级归纳 55
4.9 小结 56
4.10 答疑 56
4.11 课后研习 57
4.11.1 小测验 57
4.11.2 练习题 57
第5课 函数 59
5.1 理解函数 59
5.1.1 函数定义 59
5.1.2 函数示例 59
5.2 函数的工作原理 61
5.3 函数和结构化程序设计 62
5.3.1 结构化程序设计的优点 63
5.3.2 规划结构化程序 63
5.3.3 自上而下的方法 64
5.4 编写函数 65
5.4.1 函数头 65
5.4.2 函数体 67
5.4.3 函数原型 71
5.5 给函数传递实参 72
5.6 调用函数 72
5.7 函数的位置 75
5.8 内联函数 75
5.9 小结 76
5.10 答疑 76
5.11 课后研习 76
5.11.1 小测验 76
5.11.2 练习题 77
第6课 基本程序控制 78
6.1 数组:基本概念 78
6.2 控制程序的执行 79
6.2.1 for语句 79
6.2.2 嵌套for语句 83
6.2.3 while语句 85
6.2.4 嵌套while语句 88
6.2.5 do...while循环 89
6.3 嵌套循环 92
6.4 小结 93
6.5 答疑 94
6.6 课后研习 94
6.6.1 小测验 94
6.6.2 练习题 94
第7课 信息读写基础 96
7.1 在屏幕上显示信息 96
7.1.1 printf函数 96
7.1.2 printf的格式字符串 97
7.1.3 使用puts显示消息 103
7.2 使用scanf输入数值数据 104
7.3 三字符序列 108
7.4 小结 109
7.5 答疑 109
7.6 课后研习 109
7.6.1 小测验 109
7.6.2 练习题 110
第 2部分 C语言应用
第8课 数值数组 112
8.1 什么是数组 112
8.1.1 一维数组 113
8.1.2 多维数组 116
8.2 命名和声明数组 116
8.2.1 初始化数组 119
8.2.2 初始化多维数组 120
8.3 小结 123
8.4 答疑 123
8.5 课后研习 124
8.5.1 小测验 124
8.5.2 练习题 124
第9课 指针 126
9.1 什么是指针 126
9.1.1 计算机的内存 126
9.1.2 创建指针 127
9.2 指针和简单变量 127
9.2.1 声明指针 127
9.2.2 初始化指针 128
9.2.3 使用指针 128
9.3 指针和变量类型 130
9.4 指针和数组 131
9.4.1 数组名 131
9.4.2 储存数组元素 131
9.4.3 指针算术 134
9.5 指针的注意事项 137
9.6 数组下标表示法和指针 137
9.7 给函数传递数组 137
9.8 小结 141
9.9 答疑 142
9.10 课后研习 142
9.10.1 小测验 142
9.10.2 练习题 143
第 10课 字符和字符串 144
10.1 char数据类型 144
10.2 使用字符变量 145
10.3 使用字符串 147
10.3.1 字符数组 147
10.3.2 初始化字符数组 148
10.4 字符串和指针 148
10.5 未储存在数组中的字符串 148
10.5.1 在编译期分配字符串的空间 149
10.5.2 malloc函数 149
10.5.3 malloc函数的用法 150
10.6 显示字符串和字符 153
10.6.1 puts函数 153
10.6.2 printf函数 154
10.7 读取从键盘输入的字符串 154
10.7.1 用gets函数输入字符串 154
10.7.2 用scanf函数输入字符串 157
10.8 小结 159
10.9 答疑 160
10.10 课后研习 160
10.10.1 小测验 160
10.10.2 练习题 161
第 11课 结构、联合和typedef 163
11.1 简单结构 163
11.1.1 声明和定义结构 163
11.1.2 访问结构的成员 164
11.2 复杂结构 166
11.2.1 包含结构的结构 166
11.2.2 包含数组的结构 169
11.3 结构数组 171
11.4 初始化结构 173
11.5 结构和指针 175
11.5.1 包含指针成员的结构 175
11.5.2 创建指向结构的指针 177
11.5.3 使用指针和结构数组 179
11.5.4 给函数传递结构实参 181
11.6 联合 182
11.6.1 声明、定义并初始化联合 182
11.6.2 访问联合成员 183
11.7 用typedef创建结构的别名 187
11.8 小结 187
11.9 答疑 187
11.10 课后研习 188
11.10.1 小测验 188
11.10.2 练习题 188
第 12课 变量作用域 190
12.1 什么是作用域 190
12.1.1 演示作用域 190
12.1.2 作用域的重要性 192
12.2 创建外部变量 192
12.2.1 外部变量作用域 192
12.2.2 何时使用外部变量 192
12.2.3 extern关键字 193
12.3 创建局部变量 194
12.3.1 静态变量和自动变量 194
12.3.2 函数形参的作用域 196
12.3.3 外部静态变量 196
12.3.4 寄存器变量 197
12.4 局部变量和main函数 197
12.5 如何使用存储类别 198
12.6 局部变量和块 198
12.7 小结 199
12.8 答疑 200
12.9 课后研习 200
12.9.1 小测验 200
12.9.2 练习题 201
第 13课 高 级程序控制 203
13.1 提前结束循环 203
13.1.1 break语句 203
13.1.2 continue语句 205
13.2 goto语句 206
13.3 无限循环 208
13.4 switch语句 211
13.5 退出程序 218
13.6 小结 219
13.7 答疑 219
13.8 课后研习 219
13.8.1 小测验 220
13.8.2 练习题 220
第 14课 输入和输出 221
14.1 C语言和流 221
14.1.1 程序的输入 输出 221
14.1.2 什么是流 221
14.1.3 文本流和二进制流 222
14.1.4 预定义流 222
14.2 C语言的流函数 222
14.3 键盘输入 224
14.3.1 字符输入 224
14.3.2 行输入 228
14.3.3 格式化输入 230
14.4 屏幕输出 236
14.4.1 使用putchar、putc和fputc输出字符 236
14.4.2 使用puts和fputs输出字符串 238
14.4.3 使用printf和fprintf格式化输出 239
14.5 何时使用fprintf 243
14.6 小结 244
14.7 答疑 245
14.8 课后研习 245
14.8.1 小测验 245
14.8.2 练习题 246
第3部分 C语言进阶
第 15课 指向指针的指针和指针数组 247
15.1 声明指向指针的指针 247
15.2 指针和多维数组 248
15.3 指针数组 254
15.3.1 复习字符串和指针 255
15.3.2 声明指向char类型的指针数组 255
15.3.3 示例 257
15.4 小结 261
15.5 答疑 262
15.6 课后研习 262
15.6.1 小测验 262
15.6.2 练习题 262
第 16课 指向函数的指针和链表 264
16.1 函数指针 264
16.1.1 声明函数指针 264
16.1.2 初始化函数指针及其用法 265
16.2 链 表 271
16.2.1 链表的基本知识 272
16.2.2 使用链表 273
16.2.3 简单链表示例 277
16.2.4 实现链表 279
16.3 小结 285
16.4 答疑 285
16.5 课后研习 285
16.5.1 小测验 285
16.5.2 练习题 286
第 17课 磁盘文件 287
17.1 将流与磁盘文件相关联 287
17.2 磁盘文件的类型 287
17.3 文件名 288
17.4 打开文件 288
17.5 读写文件数据 291
17.5.1 格式化输入和输出 291
17.5.2 字符输入和输出 294
17.5.3 直接文件输入 输出 296
17.6 文件缓冲:关闭和刷新文件 299
17.7 顺序文件访问和随机文件访问 300
17.7.1 ftell函数和rewind函数 301
17.7.2 fseek函数 303
17.8 检测文件末尾 305
17.9 文件管理函数 307
17.9.1 删除文件 307
17.9.2 重命名文件 308
17.9.3 拷贝文件 308
17.10 临时文件 310
17.11 小结 312
17.12 答疑 312
17.13 课后研习 313
17.13.1 小测验 313
17.13.2 练习题 313
第 18课 操纵字符串 315
18.1 确定字符串长度 315
18.2 拷贝字符串 316
18.2.1 strcpy函数 316
18.2.2 strncpy函数 317
18.3 拼接字符串 319
18.3.1 strcat函数 319
18.3.2 strncat函数 320
18.4 比较字符串 321
18.4.1 比较字符串本身 322
18.4.2 比较部分字符串 323
18.5 查找字符串 324
18.5.1 strchr函数 324
18.5.2 strrchr函数 325
18.5.3 strcspn函数 326
18.5.4 strspn函数 327
18.5.5 strpbrk函数 328
18.5.6 strstr函数 328
18.6 将字符串转换为数字 329
18.6.1 将字符串转换为整型值 329
18.6.2 将字符串转换为long 330
18.6.3 将字符串转换为long long类型值 330
18.6.4 将字符串转换为浮点值 330
18.7 字符测试函数 331
18.8 小结 335
18.9 答疑 335
18.10 课后研习 336
18.10.1 小测验 336
18.10.2 练习题 336
第 19课 函数的高 级主题 338
19.1 给函数传递指针 338
19.2 void指针 341
19.3 带可变数目参数的函数 344
19.4 返回指针的函数 346
19.5 小结 348
19.6 答疑 348
19.7 课后研习 348
19.7.1 小测验 348
19.7.2 练习题 349
第 20课 C语言的函数库 350
20.1 数学函数 350
20.1.1 三角函数 350
20.1.2 指数函数和对数函数 350
20.1.3 双曲线函数 351
20.1.4 其他数学函数 351
20.1.5 演示数学函数 351
20.2 处理时间 352
20.2.1 表示时间 352
20.2.2 时间函数 353
20.2.3 使用时间函数 355
20.3 错误处理 357
20.3.1 assert宏 357
20.3.2 errno.h头文件 359
20.3.3 perror函数 359
20.4 查找和排序 361
20.4.1 用bsearch函数进行查找 361
20.4.2 用qsort函数进行排序 362
20.4.3 演示查找和排序 362
20.5 小结 367
20.6 答疑 367
20.7 课后研习 367
20.7.1 小测验 367
20.7.2 练习题 368
第 21课 管理内存 370
21.1 类型转换 370
21.1.1 自动类型转换 370
21.1.2 显示转换 372
21.2 分配内存存储空间 373
21.2.1 用malloc函数分配内存 374
21.2.2 用calloc函数分配内存 374
21.2.3 用realloc函数分配更多内存 375
21.2.4 用free函数释放内存 377
21.3 操控内存块 378
21.3.1 用memset函数初始化内存 378
21.3.2 用memcpy函数拷贝内存的数据 379
21.3.3 用memmove函数移动内存的数据 379
21.4 位 380
21.4.1 移位运算符 381
21.4.2 按位逻辑运算符 382
21.4.3 求反运算符 383
21.4.4 结构中的位字段 383
21.5 小结 384
21.6 答疑 384
21.7 课后研习 385
21.7.1 小测验 386
21.7.2 练习题 386
第 22课 编译器的高 级用法 388
22.1 多源代码文件编程 388
22.1.1 模块化编程的优点 388
22.1.2 模块化编程技术 388
22.1.3 模块化的组成部分 392
22.1.4 外部变量和模块化编程 392
22.2 C预处理器 393
22.2.1 #define预处理器指令 393
22.2.2 #include指令 397
22.2.3 #if、#elif、#else和#endif 397
22.2.4 使用#if#endif帮助调试 398
22.2.5 避免多次包含头文件 399
22.2.6 #undef指令 399
22.3 预定义宏 400
22.4 命令行参数 400
22.5 小结 402
22.6 答疑 402
22.7 课后研习 403
22.7.1 小测验 403
22.7.2 练习题 403
第4部分 附录
附录A ASCII表 405
附录B C C关键字 409
附录C 常用函数 411
附录D 参考答案 415