
本书以教授学生学习用计算机解决问题、学习程序设计的思想和方法为主旨,准确地讲解与程序设计相关的基本概念、基本原理和技术。本书注重循序渐进,分解编程和程序语言学习中的难点,通过大量实例详细描述了分析、思考、设计并解决这些实例,写出合理程序的过程。通过这种方式,帮助初学者逐步领会使用计算机、通过编程解决问题的正确途径。
前言<br />第1章 程序设计和C/C++?语言 1<br />1.1 程序和程序语言 1<br />1.1.1 计算机程序与程序设计 1<br />1.1.2 程序设计语言及其发展 4<br />1.1.3 高级语言及其实现 5<br />1.1.4 具体语言和程序设计 6<br />1.2 C语言和C++?语言简介 6<br />1.3 C/C++?程序快速入门 8<br />1.3.1 程序的加工和执行 8<br />1.3.2 一个简单程序 9<br />1.3.3 源程序的格式 12<br />1.3.4 程序开发过程 13<br />1.3.5 程序除错 14<br />1.4 集成开发环境Dev-C++?使用简介 14<br />1.4.1 源程序的编辑、保存、关闭和<br /> 打开 15<br />1.4.2 源程序的加工和运行 18<br />本章讨论的重要概念 21<br />练习 21<br />第2章 数据与简单计算程序 23<br />2.1 基本字符、名字表示、标识符和<br /> ? 关键字 23<br />2.1.1 名字(标识符)的构成 24<br />2.1.2 关键字 24<br />2.2 常用数据类型 25<br />2.2.1 整数类型和整数 25<br />2.2.2 实数类型和实数 27<br />2.2.3 字符和字符串 28<br />2.3 运算符、表达式与计算 31<br />2.3.1 算术运算符 31<br />2.3.2 算术表达式 31<br />2.3.3 表达式求值 32<br />2.3.4 计算和类型 33<br />2.3.5 简单计算程序 36<br />2.4 数学函数及其使用 38<br />2.4.1 函数与函数调用 38<br />2.4.2 函数调用中的类型转换 41<br />2.4.3 inf与nan 42<br />2.5 基本输出功能 43<br />2.5.1 C++?的基本输出功能 43<br />*2.5.2 C语言中的输出函数printf 45<br />*2.6 计算机中的数值表示与存储 48<br />2.6.1 数制 48<br />2.6.2 数据存储单位 49<br />2.6.3 基本类型数据的表示 50<br />2.7 Dev-C++?中的辅助编辑功能 52<br />2.7.1 插入头部注释和标准代码模块 52<br />2.7.2 其他编辑功能 53<br />本章讨论的重要概念 53<br />练习 54<br />第3章 变量和控制结构 56<br />3.1 语句、复合结构和顺序程序 56<br />3.2 变量的概念、定义和使用 57<br />3.2.1 变量的定义 57<br />3.2.2 变量的使用:赋值与取值 60<br />3.3 数据输入 71<br />3.3.1 通过输入流获取数据 71<br />*3.3.2 C语言的格式输入函数scanf 72<br />3.4 关系表达式、逻辑表达式和条件<br /> ? 表达式 74<br />3.4.1 关系运算符与关系表达式 74<br />3.4.2 逻辑运算符与逻辑表达式 76<br />3.4.3 条件表达式 78<br />3.5 语句与控制结构 79<br />3.6 选择语句 80<br />3.6.1 if语句 80<br />3.6.2 if语句的嵌套 83<br />3.6.3 if语句的优化 85<br />3.6.4 使用if语句的技术 87<br />3.6.5 开关语句 89<br />3.7 循环语句 91<br />3.7.1 while语句 91<br />3.7.2 do-while循环结构 94<br />3.7.3 for语句 95<br />3.7.4 多重循环 98<br />3.7.5 与循环有关的控制语句 100<br />3.7.6 死循环 104<br />3.8 程序动态除错方法(一) 107<br />3.8.1 动态运行错误的分析与确认 107<br />3.8.2 排除程序的动态运行错误 108<br />3.8.3 源代码的可读性 111<br />本章讨论的重要概念 112<br />练习 113<br />第4章 基本程序设计技术 115<br />4.1 循环程序设计 115<br />4.1.1 输出一系列完全平方数 116<br />4.1.2 整数范围与浮点误差 117<br />4.1.3 迭代与递推 119<br />4.1.4 通项计算 123<br />4.1.5 循环中的几种变量 125<br />4.2 常用标准库函数 126<br />4.2.1 库函数 126<br />4.2.2 程序计时 127<br />4.2.3 随机数生成函数 128<br />4.3 交互式程序设计的输入输出 130<br />4.3.1 通过计数器控制循环输入 130<br />4.3.2 用结束标志控制循环输入 131<br />4.3.3 输入函数的返回值及其作用 131<br />4.3.4 输入输出流:字符串流与<br /> 文件流 134<br />4.3.5 字符输入输出与字符相关函数 140<br />4.4 程序设计实例 145<br />4.4.1 编程实例1:一个简单猜数<br /> 游戏 145<br />4.4.2 编程实例2:一个简单计算器 147<br />4.4.3 编程实例3:文件中的单词<br /> 计数 149<br />*4.4.4 编程实例4:图形界面程序 152<br />本章讨论的重要概念 154<br />练习 154<br />第5章 函数与程序结构 157<br />5.1 函数的定义与调用 157<br />5.1.1 对自定义函数的需求 158<br />5.1.2 函数的定义 159<br />5.1.3 函数的调用 162<br />5.1.4 函数和程序 165<br />5.1.5 局部变量的作用域和生存期 166<br />5.1.6 函数调用的参数传递机制 170<br />5.2 程序的函数分解、封装与测试 173<br />5.2.1 程序的函数分解 173<br />5.2.2 函数封装和两种视角 174<br />5.2.3 函数的测试 175<br />5.2.4 自定义函数和测试 176<br />5.3 循环与递归 183<br />5.3.1 阶乘和乘幂 183<br />5.3.2 斐波那契数列 185<br />5.3.3 最大公约数 188<br />5.3.4 河内塔问题 191<br />5.4 外部变量与静态局部变量 193<br />5.4.1 外部变量 194<br />5.4.2 变量定义的嵌套 196<br />5.4.3 静态局部变量 198<br />5.4.4 外部变量与静态局部变量的<br /> 初始化 199<br />*5.4.5 名字空间 201<br />5.5 声明与定义 202<br />5.5.1 先定义后使用 202<br />5.5.2 定义与声明 203<br />5.5.3 函数原型声明 204<br />*5.5.4 外部变量的声明 204<br />5.5.5 函数分解程序实例 205<br />5.5.6 多文件开发实例 209<br />5.6 预处理 210<br />5.6.1 文件包含命令 211<br />5.6.2 宏定义与宏替换 212<br />*5.6.3 条件编译命令 215<br />5.7 程序动态除错方法(二) 216<br />5.7.1 开始调试 217<br />5.7.2 调试过程中的操作 217<br />5.7.3 调试与除错 218<br />本章讨论的重要概念 219<br />练习 219<br />第6章 数组 222<br />6.1 数组的概念、定义和使用 222<br />6.1.1 数组变量的定义 223<br />6.1.2 数组的使用 224<br />6.1.3 数组的初始化 227<br />*6.1.4 变长数组 228<br />6.2 使用数组的程序实例 229<br />6.2.1 计算日期的天数序号 230<br />6.2.2 从字符到下标 230<br />6.2.3 筛法求质数 232<br />6.2.4 约瑟夫问题 234<br />6.2.5 多项式求值 235<br />6.3 以数组作为函数的参数 237<br />6.3.1 函数的数组参数 237<br />6.3.2 修改实参数组的元素 239<br />6.3.3 定义数组的考虑 241<br />6.4 二维和多维数组 242<br />6.4.1 多维数组的初始化 242<br />6.4.2 多维数组的使用和表示 243<br />6.4.3 多维数组作为函数的参数 245<br />6.5 字符数组与字符串 245<br />6.5.1 字符数组 245<br />6.5.2 字符串 246<br />6.5.3 字符串的输出与输入 247<br />6.5.4 字符串程序实例 249<br />6.5.5 标准库的字符串处理函数 252<br />6.5.6 从文件读取字符串程序实例 254<br />6.6 编程实例 255<br />6.6.1 拼手气发红包 256<br />6.6.2 学生成绩的统计和分析 258<br />6.6.3 统计源程序中的关键字 264<br />本章讨论的重要概念 267<br />练习 267<br />第7章 指针 270<br />7.1 地址与指针 270<br />7.2 指针变量的定义和使用 272<br />7.2.1 指针变量的定义 272<br />7.2.2 指针操作 273<br />7.2.3 指针作为函数的参数 275<br />7.2.4 指针作为函数的返回值 277<br />7.2.5 与指针有关的一些问题 278<br />7.3 指针与数组 281<br />7.3.1 指向数组元素的指针 281<br />7.3.2 数组写法与指针写法 284<br />7.3.3 数组参数与指针 285<br />*7.3.4 多维数组作为参数的通用<br /> ?? 函数 287<br />7.3.5 字符指针与字符串 289<br />7.4 指针数组 295<br />7.4.1 字符指针数组 295<br />7.4.2 指针数组与二维数组 297<br />*7.4.3 命令行参数及其处理 297<br />7.5 动态存储管理 300<br />7.5.1 为什么需要动态存储管理 300<br />7.5.2 动态存储管理机制 302<br />7.5.3 动态存储分配程序实例 307<br />7.6 指向函数的指针 310<br />7.6.1 作用和定义 311<br />7.6.2 数值积分函数 314<br />7.6.3 遍历数组 315<br />本章讨论的重要概念 316<br />练习 317<br />第8章 结构体和其他数据机制 320<br />8.1 定义类型 320<br />8.1.1 简单类型定义 320<br />8.1.2 定义数组类型 321<br />*8.1.3 定义函数指针类型 322<br />8.2 结构体 322<br />8.2.1 结构体类型定义 323<br />8.2.2 结构体变量的定义和初始化 324<br />8.2.3 结构体变量的使用 325<br />8.2.4 结构体与函数 328<br />8.2.5 结构体、数组与指针 331<br />8.3 结构体编程实例 335<br />8.3.1 复数的表示和处理 335<br />8.3.2 学生成绩管理系统 338<br />8.4 自引用结构体 347<br />8.4.1 自引用结构体的概念 347<br />8.4.2 使用自引用结构体的程序<br /> 实例 348<br />8.4.3 数据与查找 352<br />本章讨论的重要概念 352<br />练习 352<br />附录 355<br />附录A C和C++?语言运算符表 355<br />附录B ANSI C关键字列表 356<br />附录C C和C++?语言常用功能速查 357<br />附录D 命名规范 358<br />附录E 编程形式规范 359<br />进一步学习的建议 361<br />参考文献 364