作者 |
布Bradley Jones Peter Aitken Dean Miller |
丛书名 |
出版社 |
人民邮电出版社 |
ISBN |
9787115355379 |
简要 |
简介 |
内容简介书籍计算机书籍 《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语言的教程或参考资料。 |
目录 |
第 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 |