目录 第1 章 计算与计算思维………………………………………………………………………………1 1.1 计算机的产生与发展………………………………………………………………………… 1 1.1.1 计算机概念及发展…………………………………………………………………… 1 1.1.2 计算机的特点与不足……………………………………………………………… 5 1.1.3 计算思想形式化…………………………………………………………………… 6 1.2 计算思维与生活…………………………………………………………………………… 11 1.2.1 农夫过河问题……………………………………………………………………… 11 1.2.2 掷铅球问题…………………………………………………………………………12 1.2.3 汉诺塔问题………………………………………………………………………… 13 1.2.4 啤酒与尿布问题…………………………………………………………………… 14 1.3 计算思维的本质…………………………………………………………………………… 14 1.3.1 科学思维的形式…………………………………………………………………… 14 1.3.2 计算思维的特征…………………………………………………………………… 16 1.3.3 计算思维的延伸…………………………………………………………………… 17 1.4 本章小结…………………………………………………………………………………… 18 1.5 本章习题…………………………………………………………………………………… 18 第2 章 计算机基础………………………………………………………………………………… 20 2.1 计算机的组成与冯·诺依曼体系………………………………………………………… 20 2.1.1 计算机的组成……………………………………………………………………… 20 2.1.2 冯·诺依曼体系……………………………………………………………………… 21 2.1.3 中央处理器………………………………………………………………………… 21 2.1.4 存储器……………………………………………………………………………… 22 2.1.5 输入/ 输出设备…………………………………………………………………… 23 2.2 机器数与进制转换………………………………………………………………………… 24 2.2.1 机器数与数制……………………………………………………………………… 24 2.2.2 数制转换…………………………………………………………………………… 25 2.3 计算机中的编码…………………………………………………………………………… 27 2.3.1 数据在计算机中的表示…………………………………………………………… 27 2.3.2 原码、反码、补码………………………………………………………………… 27 2.3.3 其他几种编码……………………………………………………………………… 28 2.4 本章小结…………………………………………………………………………………… 30 2.5 本章习题…………………………………………………………………………………… 31 VI 计算思维导论(C 语言实现) 第3 章 程序设计语言………………………………………………………………………………… 32 3.1 程序的概念与表示………………………………………………………………………… 32 3.1.1 生活中的程序……………………………………………………………………… 32 3.1.2 计算机中的程序…………………………………………………………………… 33 3.1.3 流程图……………………………………………………………………………… 35 3.2 程序设计语言发展简述…………………………………………………………………… 37 3.2.1 软件的产生………………………………………………………………………… 37 3.2.2 程序设计语言发展史……………………………………………………………… 37 3.2.3 类型语言…………………………………………………………………………… 42 3.2.4 程序设计语言的选择……………………………………………………………… 42 3.3 C 程序设计语言…………………………………………………………………………… 42 3.3.1 C 语言特点…………………………………………………………………………… 43 3.3.2 C 语言编程规范…………………………………………………………………… 45 3.4 本章小结…………………………………………………………………………………… 46 3.5 本章习题…………………………………………………………………………………… 46 第4 章 程序设计语言入门——你好C 语言……………………………………………………… 48 4.1 VS 2015 工具介绍………………………………………………………………………… 48 4.2 最简单的C 语言程序………………………………………………………………………… 48 4.3 Hello World 程序解析……………………………………………………………………… 52 4.4 C 语言程序的执行………………………………………………………………………… 54 4.5 常见问题解决……………………………………………………………………………… 57 4.6 本章小结…………………………………………………………………………………… 62 4.7 本章习题…………………………………………………………………………………… 62 第5 章 C 语言基础——“我们”不一样………………………………………………………… 63 5.1 数据类型…………………………………………………………………………………… 63 5.1.1 常见的数据类型…………………………………………………………………… 63 5.1.2 变量与常量………………………………………………………………………… 64 5.1.3 玩转变量…………………………………………………………………………… 67 5.2 运算符和表达式…………………………………………………………………………… 67 5.2.1 算术运算符及表达式……………………………………………………………… 68 5.2.2 赋值运算符及表达式……………………………………………………………… 69 5.2.3 关系运算符及表达式……………………………………………………………… 70 5.2.4 逻辑运算符及表达式……………………………………………………………… 71 5.2.5 条件运算符及表达式……………………………………………………………… 71 5.2.6 关于运算符的优先级……………………………………………………………… 72 5.3 表达式……………………………………………………………………………………… 72 5.3.1 表达式的概念……………………………………………………………………… 72 5.3.2 表达式的作用……………………………………………………………………… 73 5.3.3 表达式的属性……………………………………………………………………… 73 VII 5.4 本章小结…………………………………………………………………………………… 74 5.5 本章习题…………………………………………………………………………………… 74 第6 章 标准输入与输出函数——我想和“你”聊聊…………………………………………… 75 6.1 格式化输出函数printf…………………………………………………………………… 75 6.1.1 printf 函数调用的一般形式……………………………………………………… 75 6.1.2 printf 格式字符说明 ……………………………………………………………… 77 6.1.3 printf 普通字符说明……………………………………………………………… 79 6.2 格式化输入函数scanf()…………………………………………………………………… 79 6.2.1 scanf 函数调用的一般格式……………………………………………………… 80 6.2.2 scanf 函数调用注意事项………………………………………………………… 81 6.3 字符输入与输出函数……………………………………………………………………… 82 6.3.1 字符输出函数putchar…………………………………………………………… 82 6.3.2 字符输入函数getchar…………………………………………………………… 82 6.4 场景模拟实现……………………………………………………………………………… 84 6.5 本章小结…………………………………………………………………………………… 86 6.6 本章习题…………………………………………………………………………………… 87 第7 章 函数思维——生活中的“模块”………………………………………………………… 88 7.1 初见函数:搭积木………………………………………………………………………… 88 7.2 再见函数:投币式洗衣机………………………………………………………………… 89 7.3 又见函数:采蘑菇的小姑娘……………………………………………………………… 90 7.4 四见函数:简易计算器…………………………………………………………………… 90 7.5 函数思维…………………………………………………………………………………… 91 7.6 本章小结…………………………………………………………………………………… 92 7.7 本章习题…………………………………………………………………………………… 92 第8 章 函数实现——程序中的“模块”………………………………………………………… 93 8.1 函数的声明与实现………………………………………………………………………… 93 8.1.1 函数的声明与实现:搭积木……………………………………………………… 93 8.1.2 函数的调用………………………………………………………………………… 94 8.2 函数的参数:投币式洗衣机……………………………………………………………… 95 8.2.1 函数的参数………………………………………………………………………… 95 8.2.2 深入函数参数……………………………………………………………………… 97 8.3 函数的返回值:采蘑菇的小姑娘………………………………………………………… 97 8.3.1 返回值的引入……………………………………………………………………… 97 8.3.2 函数的返回值……………………………………………………………………… 98 8.4 简易计算器实现…………………………………………………………………………… 99 8.5 本章小结………………………………………………………………………………… 101 8.6 本章习题………………………………………………………………………………… 101 VIII 计算思维导论(C 语言实现) 第9 章 分支结构——做人生正确的选择………………………………………………………… 103 9.1 单分支语句……………………………………………………………………………… 104 9.2 双分支语句……………………………………………………………………………… 105 9.3 多分支语句……………………………………………………………………………… 106 9.4 利用switch 语句实现多分支语句……………………………………………………… 108 9.5 程序范例………………………………………………………………………………… 110 9.6 本章小结………………………………………………………………………………… 112 9.7 本章习题………………………………………………………………………………… 114 第10 章 循环结构——漫漫十年还贷路………………………………………………………… 115 10.1 while 语句………………………………………………………………………………… 115 10.2 do...while 语句………………………………………………………………………… 118 10.3 for 语句………………………………………………………………………………… 120 10.4 break 语句与continue 语句…………………………………………………………… 122 10.4.1 break 语句……………………………………………………………………… 122 10.4.2 continue 语句………………………………………………………………… 124 10.5 双重循环………………………………………………………………………………… 125 10.6 程序范例………………………………………………………………………………… 127 10.7 本章小结………………………………………………………………………………… 131 10.8 本章习题………………………………………………………………………………… 131 第11 章 数组——熊孩子的成绩单……………………………………………………………… 133 11.1 一维数组的定义和引用………………………………………………………………… 133 11.1.1 一维数组的概念……………………………………………………………… 133 11.1.2 一维数组的定义……………………………………………………………… 134 11.1.3 一维数组的引用和初始化…………………………………………………… 135 11.2 字符数组的定义和引用………………………………………………………………… 136 11.2.1 字符数组的定义与初始化…………………………………………………… 136 11.2.2 字符数组的输入输出………………………………………………………… 137 11.2.3 字符串处理函数……………………………………………………………… 138 11.3 数组与函数……………………………………………………………………………… 141 11.4 二维数组………………………………………………………………………………… 142 11.5 本章小结………………………………………………………………………………… 144 11.6 本章习题………………………………………………………………………………… 144 第12 章 指针——大海捞“书”轻而易举……………………………………………………… 146 12.1 指针的概念、定义与使用……………………………………………………………… 146 12.1.1 变量与内存…………………………………………………………………… 146 12.1.2 指针的概念以及定义………………………………………………………… 147 12.2 指针与变量……………………………………………………………………………… 148 12.3 指针的运算……………………………………………………………………………… 150 12.3.1 指针的算术运算……………………………………………………………… 150 IX 12.3.2 指针的关系运算……………………………………………………………… 150 12.4 指针与数组……………………………………………………………………………… 151 12.4.1 指向一维数组的指针………………………………………………………… 151 12.4.2 数组名与指针变量的区别…………………………………………………… 153 12.4.3 指针与字符串………………………………………………………………… 153 12.5 指针作为函数参数……………………………………………………………………… 157 12.5.1 值传递………………………………………………………………………… 157 12.5.2 地址传递……………………………………………………………………… 158 12.5.3 一维数组名作为函数参数…………………………………………………… 159 12.6 本章小结………………………………………………………………………………… 161 12.7 本章习题………………………………………………………………………………… 161 第13 章 结构体——自定义“封装”…………………………………………………………… 164 13.1 结构体概述与定义……………………………………………………………………… 164 13.2 结构体变量的定义……………………………………………………………………… 165 13.3 结构体变量的引用和赋值……………………………………………………………… 167 13.3.1 结构体变量的引用…………………………………………………………… 167 13.3.2 结构体变量的初始化………………………………………………………… 168 13.3.3 结构体变量的输入和输出…………………………………………………… 169 13.4 结构体变量的内存分配………………………………………………………………… 171 13.5 结构体类型的数组……………………………………………………………………… 172 13.6 本章小结………………………………………………………………………………… 178 13.7 本章习题………………………………………………………………………………… 179 第14 章 文件——模拟“数据库”……………………………………………………………… 180 14.1 文件的引入……………………………………………………………………………… 180 14.1.1 文件流………………………………………………………………………… 180 14.1.2 文件指针……………………………………………………………………… 181 14.2 文件的操作……………………………………………………………………………… 181 14.2.1 文件的打开与关闭…………………………………………………………… 181 14.2.2 文件的顺序读写……………………………………………………………… 184 14.3 文本格式和二进制格式………………………………………………………………… 189 14.4 本章小结………………………………………………………………………………… 189 14.5 本章习题………………………………………………………………………………… 190 参考文献……………………………………………………………………………………………… .191