目录 大纲第1章计算机与程序设计1 1.1什么是计算机1 1.2如何存储程序4 1.2.1存储单位4 1.2.2存储方式4 1.2.3存取操作5 1.2.4存储器分类5 1.2.5文件与目录5 1.3软件与程序设计7 1.4典型程序演示9 1.5程序设计方法10 1.5.1结构化方法10 1.5.2面向对象方法11 1.6程序设计语言11 1.7C/C++语言简介14 1.8C/C++结构化程序设计基本环境16 小结18 概念理解18 基本功训练19 实验指导19 第2章数据类型与变量——程序设计入门20 2.1在屏幕上输出文字信息20 2.1.1C语言程序的基本框架21 2.1.2注释22 2.1.3预处理指令22 2.1.4主函数——应用程序的入口23 2.1.5转义序列23 2.1.6保留字与分隔符24 2.1.7标准输出函数24 2.2计算两个固定整数的和与积25 2.2.1输出列表和占位符27 2.2.2数据类型——整型28 2.2.3常量与变量29 2.2.4算术运算和算术表达式31 2.2.5赋值语句31 2.2.6程序设计的风格32 2.3计算任意两个整数的和与积33 2.3.1标准输入函数34 2.3.2测试用例35 2.3.3程序的顺序结构36 2.4温度转换37 2.4.1变量的初始化39 2.4.2运算的优先级和结合性41 2.5求两个整数的平均值42 2.5.1浮点型数据44 2.5.2浮点型数据的输入与输出46 2.5.3浮点型数据的舍入误差和溢出问题48 2.5.4不同类型之间的转换50 2.6计算圆的周长和面积51 2.6.1符号常量52 2.6.2带参数的宏53 小结54 概念理解54 常见错误55 在线评测56 项目设计58 实验指导59 第3章判断与决策——选择程序设计60 3.1让成绩合格的学生通过60 3.1.1关系运算与逻辑判断61 3.1.2逻辑常量与逻辑变量63 3.1.3单分支选择结构64 3.1.4特殊形式的判断条件66 3.1.5比较两个实数的大小67 3.1.6复合语句69 3.2按成绩把学生分成两组70 3.2.1双分支选择结构73 3.2.2条件运算74 3.3按成绩把学生分成多组(百分制)75 3.3.1嵌套的if结构81 3.3.2嵌套的ifelse结构82 3.3.3多分支选择结构85 3.4按成绩把学生分成多组(五级制)87 3.4.1字符常量和变量90 3.4.2字符型变量的输入与输出91 3.5判断闰年问题93 3.5.1逻辑运算94 3.5.2逻辑运算的优先级和短路性95 小结96 概念理解97 常见错误97 在线评测98 项目设计100 实验指导100 第4章重复与迭代——循环程序设计101 4.1打印规则图形101 4.1.1计数控制的while循环103 4.1.2自增、自减运算104 4.2自然数求和105 4.2.1迭代与赋值107 4.2.2更多的赋值运算109 4.2.3for循环109 4.3简单的学生成绩统计115 4.3.1标记控制的while循环117 4.3.2程序的容错能力118 4.3.3程序调试与测试119 4.3.4输入输出重定向119 4.3.5dowhile循环121 4.4计算2的算术平方根123 4.4.1误差精度控制的while循环125 4.4.2const常量126 4.5打印九九乘法表127 4.5.1多重循环嵌套 128 4.5.2穷举法131 4.6判断一个数是否是素数132 4.6.1break /continue135 4.6.2goto语句137 4.7随机游戏模拟140 4.7.1随机数的生成141 4.7.2自顶向下、逐步求精144 4.7.3游戏程序的基本结构145 4.8结构化程序设计145 小结146 概念理解147 常见错误147 在线评测148 项目设计151 实验指导151 第5章分而治之——模块化程序设计152 5.1再次讨论猜数游戏模拟问题152 5.1.1模块化思想155 5.1.2函数定义156 5.1.3函数调用160 5.1.4函数原型165 5.1.5函数测试166 5.2是非判断问题求解166 5.2.1判断函数166 5.2.2变量的存储类别与作用域168 5.2.3函数调用堆栈175 5.3递归问题求解177 5.3.1问题的递归描述178 5.3.2递归函数178 5.4用计算机绘图182 5.4.1接口设计186 5.4.2接口实现187 5.4.3全局变量188 5.4.4私有函数191 5.4.5建立自己的库192 5.5学生成绩管理——大规模问题求解192 5.5.1程序文件模块195 5.5.2构建多文件应用程序196 小结198 概念理解198 常见错误199 在线评测199 项目设计202 实验指导202 第6章批量数据处理——数组程序设计203 6.1一组数据排序问题203 6.1.1什么是一维数组206 6.1.2一维数组的声明206 6.1.3一维数组的引用207 6.1.4一维数组初始化209 6.1.5让下标从1开始209 6.1.6交换排序210 6.1.7一维数组作为函数的参数212 6.2三门课程成绩按总分排序问题215 6.2.1二维数组218 6.2.2选择排序220 6.2.3二维数组作为函数的参数221 6.3在成绩单中查找某人的成绩222 6.3.1字符数组与字符串227 6.3.2字符串的输入与输出227 6.3.3字符串的基本操作229 6.3.4标准库中的字符及字符串函数230 6.3.5字符串数组234 6.3.6线性查找235 6.3.7折半查找236 6.4大整数加法237 6.4.1逻辑右对齐相加法240 6.4.2逆置左对齐相加法241 小结242 概念理解243 常见错误244 在线评测244 项目设计247 实验指导249 第7章内存单元的地址——指针程序设计250 7.1用函数交换两个变量的值251 7.1.1指针变量的声明和初始化254 7.1.2指针变量的引用255 7.1.3指针作为函数的参数256 7.2再次讨论批量数据处理问题259 7.2.1指向一维数组的指针和指针运算261 7.2.2用指针访问一维数组的元素263 7.2.3用const修饰指针267 7.3二维批量数据处理问题的指针版267 7.3.1二维数组名与行列地址270 7.3.2用指针访问二维数组的元素271 7.3.3指针的指针274 7.4通用函数问题275 7.4.1指向函数的指针277 7.4.2指向函数的指针作为函数的参数278 7.5再次讨论字符串279 7.5.1字符指针与字符数组282 7.5.2字符型指针数组284 7.5.3用字符指针进行字符串排序286 7.6程序运行时提供必要的参数286 7.6.1命令行参数288 7.6.2集成环境下设置应用程序参数289 7.7数据规模未知的问题求解289 7.7.1void类型的指针293 7.7.2动态分配内存294 7.7.3动态申请字符串295 7.7.4动态申请一维数组296 7.7.5动态申请二维数组296 7.7.6让指针指向被调用函数中动态申请的内存300 7.7.7C++中的引用302 小结304 概念理解305 常见错误306 在线评测307 项目设计310 实验指导311 第8章客观对象的描述——结构程序设计312 8.1基于对象数组的学生成绩管理问题312 8.1.1结构类型316 8.1.2结构变量的声明及使用317 8.1.3typedef319 8.1.4指向结构的指针321 8.1.5结构变量的内存映像324 8.1.6结构类型定义的嵌套325 8.1.7结构数组和指向结构数组的指针325 8.1.8结构作为函数的参数或返回值327 8.1.9抽象数据类型328 8.2基于对象链表的学生成绩管理系统329 8.2.1自引用结构与链表334 8.2.2静态链表和动态链表336 8.2.3返回链表的头指针340 8.2.4学生对象链表341 8.3志愿者管理问题341 8.3.1联合343 8.3.2志愿者信息存储345 8.4洗牌和发牌模拟问题345 8.5枚举类型348 小结351 概念理解351 常见错误352 在线评测352 项目设计356 实验指导356 第9章数据的持久存储——文件程序设计357 9.1给一个源程序文件做备份357 9.1.1文件与目录360 9.1.2文件格式361 9.1.3文件操作的一般步骤361 9.1.4字符读写363 9.1.5字符串读写(无格式的行读写)364 9.2把数据保存到文件中365 9.2.1格式化读写370 9.2.2二进制块数据读写372 小结378 概念理解378 常见错误379 在线评测379 项目设计382 实验指导382 ⅩⅦⅩⅧ第10章位运算——低级程序设计383 10.1网络IP地址的表示383 10.1.1按位左移或右移385 10.1.2按位取反387 10.1.3按位与387 10.2加密解密问题389 10.2.1按位或390 10.2.2按位异或391 10.3一个图形类型优化问题391 10.4位段394 小结396 概念理解396 常见错误396 在线评测397 项目设计398 实验指导401 附录AC语言的关键字402 附录BASCII码403 附录CC运算符的优先级与结合性404 附录DC++版的HelloWorld!406 D.1C++的头文件406 D.2命名空间407 D.3C++的输入和输出408 附录E索引410 E.1全书求解问题索引410 E.2全书各章节知识点索引411 参考文献414