C语言程序设计 基于计算思维的培养
作者:曾智勇 编著
出版时间: 2020年版
内容简介
本书以C语言为工具,力图用*简明的语言、*典型的实例,介绍计算思维和程序设计的基本方法,把它们的核心思想贯穿于C语言的介绍中,目的是使读者在学习C语言以后,能够用计算思维和程序设计的方法解决相关领域中的实际问题。本书分13章,内容包括:C语言基本概念,数据类型与表达式,格式化输入与输出,选择结构,循环结构,函数,数组,指针,字符串,指针与数组,自定义数据类型,文件,构建大规模程序。每单后均有习题,扫描第1~12章后的二维码,可以获取本章知识点小结和本章常见错误小结。本书免费提供电子课件,登录华信教育资源网(www.hxedu.com.cn)注册后下载。本书假设读者没有任何编程背景,既可以是学生及计算机用户,也可以是有经验的但不熟悉C语言、需要掌握结构化程序设计方法的程序员。
目录
第1章 C语言基本概念\t1
1.1 计算机语言和程序\t1
1.1.1 计算机语言\t1
1.1.2 计算机程序\t1
1.1.3 C语言\t2
1.1.4 程序设计\t2
1.2 算法和算法表示\t3
1.2.1 算法的概念\t4
1.2.2 算法的特征\t5
1.2.3 算法的表示\t6
1.2.4 算法的优化\t12
1.2.5 结构化程序设计方法\t14
1.3 C语言编程\t17
1.4 变量、表达式和赋值\t19
1.5 从键盘读取输入\t20
1.6 常量定义\t21
1.7 标识符\t23
1.8 C程序的结构特点\t24
1.9 C语言编程风格\t25
习题1\t26
第2章 数据类型与表达式\t28
2.1 变量声明与表达式\t28
2.2 基本数据类型\t28
2.3 整型\t29
2.4 浮点型\t30
2.5 算术运算符与表达式\t31
2.5.1 算术运算符\t31
2.5.2 算术表达式\t33
2.6 赋值运算符与表达式\t34
2.6.1 赋值运算符\t34
2.6.2 赋值表达式\t34
2.6.3 复合赋值运算符及表达式\t35
2.7 自增/自减运算符\t36
2.8 字符型\t36
2.9 字符处理函数\t38
2.10 类型转换\t40
2.11 类型定义\t42
习题2\t43
实验题\t46
第3章 格式化输入与输出\t47
3.1 输出函数\t47
3.2 输入函数\t50
习题3\t55
实验题\t56
第4章 选择结构\t57
4.1 关系、等式和逻辑运算符\t57
4.2 逻辑运算符和表达式\t58
4.3 复合语句\t59
4.4 空语句\t59
4.5 if语句\t59
4.6 if-else语句\t61
4.7 if语句的嵌套\t62
4.8 级联式语句\t66
4.9 switch语句\t67
4.10 条件表达式\t69
4.11 程序举例与测试\t70
4.12 本章扩展内容:位运算\t73
4.12.1 位运算符\t73
4.12.2 位逻辑运算\t73
4.12.3 移位运算\t74
4.12.4 复合位运算赋值运算符\t75
4.12.5 位运算的应用\t75
习题4\t76
实验题\t81
第5章 循环结构\t82
5.1 循环结构与循环语句\t82
5.2 计数控制的循环\t87
5.3 嵌套循环\t89
5.4 条件控制的循环\t91
5.5 流程的控制转移\t95
5.5.1 break语句\t95
5.5.2 continue语句\t96
5.5.3 goto语句\t98
5.6 应用举例\t99
习题5\t103
实验题\t105
第6章 函数\t107
6.1 模块化程序设计\t107
6.2 函数的定义\t108
6.2.1 函数的分类\t108
6.2.2 函数的定义\t108
6.3 函数调用\t109
6.4 函数原型声明\t111
6.5 函数封装与防御性编程\t113
6.6 函数设计的基本原则\t118
6.7 函数的嵌套调用\t119
6.8 函数的递归调用和递归函数\t120
6.9 变量的作用域和存储类型\t122
6.9.1 变量的作用域\t122
6.9.2 变量的存储类型\t124
6.10 模块化程序设计实例\t128
习题6\t132
实验题\t135
第7章 数组\t136
7.1 一维数组\t136
7.2 二维数组\t138
7.3 一维数组作为函数参数\t140
7.4 排序与查找\t144
7.5 二维数组作为函数参数\t152
习题7\t154
实验题\t157
第8章 指针\t158
8.1 指针和指针变量\t158
8.2 指针变量的定义和初始化\t158
8.3 间接寻址运算符\t161
8.4 指针变量作为函数参数\t163
8.5 指针变量作为函数参数应用举例\t166
8.6 函数指针及其应用\t171
习题8\t174
实验题\t176
第9章 字符串\t178
9.1 字符串常量\t178
9.2 字符串的存储\t178
9.3 字符指针\t179
9.4 字符串的读/写\t180
9.5 字符串处理函数\t184
9.6 字符串作为函数参数\t186
9.7 从函数返回字符串指针\t187
习题9\t189
实验题\t191
第10章 指针与数组\t192
10.1 指针的运算\t192
10.2 指针和一维数组的关系\t192
10.3 指针和二维数组的关系\t197
10.4 指针数组及其应用\t201
10.5 动态数组\t205
10.5.1 C程序的内存映像\t205
10.5.2 动态内存分配函数\t206
10.5.3 一维动态数组的内存分配\t208
10.5.4 二维动态数组的内存分配\t209
习题10\t211
实验题\t212
第11章 自定义数据类型\t214
11.1 用户自定义数据类型和信息隐藏\t214
11.2 结构体的定义\t214
11.3 结构体变量的初始化\t216
11.4 结构体的嵌套\t217
11.5 结构体变量的引用\t217
11.6 结构体变量在内存中的存储形式\t219
11.7 结构体数组的定义和初始化\t220
11.8 结构体指针的定义和初始化\t223
11.9 结构体作为函数参数\t224
11.10 共用体\t229
11.11 枚举类型\t231
11.12 单向链表\t234
11.12.1 问题的提出\t234
11.12.2 链表\t234
11.12.3 单向链表的创建\t235
11.12.4 单向链表的搜索\t237
11.12.5 从单向链表中删除节点\t238
习题11\t242
实验题\t244
第12章 文件\t246
12.1 文件分类\t246
12.2 文件的打开与关闭\t247
12.3 顺序读/写文件\t248
12.3.1 读/写字符\t248
12.3.2 读/写字符串\t251
12.3.3 格式化读/写文件\t253
12.3.4 读/写数据块\t257
12.4 随机读/写文件\t260
12.5 标准输入/输出重定向\t262
习题12\t263
实验题\t265
第13章 构建大规模程序\t266
13.1 头文件\t266
13.1.1 #include指令的使用\t266
13.1.2 定义共享类型和宏\t266
13.1.3 共享函数原型\t267
13.1.4 共享变量声明\t268
13.1.5 嵌套包含\t268
13.1.6 保护头文件\t268
13.1.7 头文件中的#error指令\t269
13.2 源文件\t269
13.3 多文件程序的设计\t269
13.4 构建多文件程序\t273
13.4.1 makefile文件\t274
13.4.2 链接错误\t274
13.4.3 重构程序\t275
13.4.4 在程序外定义宏\t276
习题13\t277
实验题\t277
附录A Dev-C++和Visual C++下基本数据类型的取值范围\t278
附录B 关键字\t278
附录C 运算符的优先级与结合性\t279
附录D ASCII字符表\t280
附录E ANSI C标准库函数\t282
附录F Dev-C++集成开发环境\t289
参考文献\t292