展开全部

主编推荐语

全面内容,12章精讲,强调编程思想。

内容简介

本书内容全面,突出基础和重点,强调程序设计的方法和思想,全书共分为12章,主要内容包括绪论、程序基本结构、顺序程序设计、分支程序设计、循环程序设计、数组、函数、指针、更多的数据类型、位操作、文件、模块化开发。

目录

  • 版权信息
  • 内容提要
  • 前言
  • 第1章 程序设计概述
  • 1.1 什么是程序设计
  • 1.2 计算机的基本组成
  • 1.2.1 计算机硬件
  • 1.2.2 计算机软件
  • 1.3 程序设计语言
  • 1.3.1 机器语言
  • 1.3.2 汇编语言
  • 1.3.3 高级语言
  • 1.3.4 智能语言
  • 1.3.5 C语言
  • 1.4 程序设计过程
  • 1.4.1 算法设计
  • 1.4.2 编码
  • 1.4.3 编译与链接
  • 1.4.4 调试与维护
  • 1.5 编程规范及常见问题
  • 1.5.1 真的需要算法设计阶段吗
  • 1.5.2 为什么不用自然语言编程
  • 1.5.3 寄存器、主存储器和外存储器有什么不同
  • 1.5.4 所有的计算机能够执行的指令都是相同的吗
  • 1.5.5 为什么需要编译和链接
  • 1.5.6 为什么在不同类型的计算机上运行C语言程序需要使用不同的编译器
  • 1.5.7 为什么不同类型的计算机不能运行同一个汇编程序
  • 1.6 小结
  • 1.7 自测题
  • 1.8 实战训练
  • 第2章 初识C语言
  • 2.1 一个完整的C语言程序
  • 2.1.1 注释
  • 2.1.2 预编译
  • 2.1.3 主程序
  • 2.2 C语言的开发环境
  • 2.2.1 VS2010的安装
  • 2.2.2 程序输入
  • 2.2.3 编译链接
  • 2.2.4 程序的运行
  • 2.2.5 程序的调试
  • 2.3 编程规范及常见问题
  • 2.3.1 注意注释
  • 2.3.2 良好的排版习惯
  • 2.3.3 为什么要学C语言
  • 2.3.4 如何学习程序设计
  • 2.3.5 什么是库
  • 2.4 小结
  • 2.5 自测题
  • 2.6 实战训练
  • 第3章 顺序程序设计
  • 3.1 常量与变量
  • 3.1.1 变量定义
  • 3.1.2 数据类型
  • 3.1.3 常量与符号常量
  • 3.2 数据的输入/输出
  • 3.2.1 字符的输入/输出
  • 3.2.2 格式化输入/输出
  • 3.3 算术运算
  • 3.3.1 算术表达式
  • 3.3.2 不同类型数据间的混合运算
  • 3.3.3 强制类型转换
  • 3.3.4 数学函数库
  • 3.4 赋值运算
  • 3.4.1 赋值表达式
  • 3.4.2 赋值的嵌套
  • 3.4.3 复合赋值运算
  • 3.4.4 自增和自减运算符
  • *3.5 信息表示
  • 3.5.1 数制间的转换
  • 3.5.2 整数的表示
  • 3.5.3 实数的表示
  • 3.6 顺序程序设计示例
  • 3.7 程序规范及常见问题
  • 3.7.1 变量命名
  • 3.7.2 运算符的优先级
  • 3.7.3 数据运算时的注意事项
  • 3.7.4 为什么要定义符号常量
  • 3.7.5 变量定义后且对它赋值前的值是什么
  • 3.7.6 不要在表达式中插入有副作用的子表达式
  • 3.8 小结
  • 3.9 自测题
  • 3.10 实战训练
  • 第4章 分支程序设计
  • 4.1 关系表达式
  • 4.2 逻辑表达式
  • 4.2.1 逻辑运算
  • 4.2.2 短路求值
  • 4.3 if语句
  • 4.3.1 if语句的形式
  • 4.3.2 if语句的嵌套
  • 4.3.3 条件表达式
  • 4.4 switch语句及其应用
  • 4.5 程序规范及常见问题
  • 4.5.1 条件语句程序的排版
  • 4.5.2 不要连用关系运算符
  • 4.5.3 注意短路求值
  • 4.5.4 常见错误
  • 4.6 小结
  • 4.7 自测题
  • 4.8 实战训练
  • 第5章 循环程序设计
  • 5.1 计数循环
  • 5.1.1 for语句
  • 5.1.2 for语句的进一步讨论
  • 5.1.3 for循环的嵌套
  • 5.2 break和continue语句
  • 5.2.1 break语句
  • 5.2.2 continue语句
  • 5.3 基于哨兵的循环
  • 5.3.1 while语句
  • 5.3.2 do…while循环
  • 5.4 循环的中途退出
  • 5.5 编程规范和常见问题
  • 5.5.1 循环语句程序的排版
  • 5.5.2 优化循环体
  • 5.5.3 使用for循环的注意事项
  • 5.5.4 常见错误
  • 5.5.5 三个循环语句之间的关系
  • 5.6 小结
  • 5.7 自测题
  • 5.8 实战训练
  • 第6章 过程封装
  • 6.1 函数的定义
  • 6.1.1 函数的基本结构
  • 6.1.2 return语句
  • 6.1.3 函数示例
  • 6.2 函数的使用
  • 6.2.1 函数原型的声明
  • 6.2.2 函数调用
  • 6.2.3 将函数与主程序放在一起
  • 6.2.4 函数调用过程
  • 6.3 带参数的宏
  • 6.4 变量的作用域
  • 6.4.1 局部变量
  • 6.4.2 全局变量
  • 6.5 变量的存储类别
  • 6.5.1 自动变量
  • 6.5.2 静态变量
  • 6.5.3 寄存器变量
  • 6.5.4 外部变量
  • *6.6 多源文件程序的编译链接
  • 6.7 递归程序设计
  • 6.7.1 递归的基本概念
  • 6.7.2 递归函数的应用
  • 6.8 编程规范及常见问题
  • 6.8.1 使用函数时的建议
  • 6.8.2 函数命名
  • 6.8.3 没有返回值的函数是否需要return语句
  • 6.8.4 尽量避免使用全局变量
  • 6.8.5 尽量避免实际参数表达式有副作用
  • 6.8.6 常见错误
  • 6.9 小结
  • 6.10 自测题
  • 6.11 实战训练
  • 第7章 批量数据处理
  • 7.1 一维数组
  • 7.1.1 一维数组的定义
  • 7.1.2 数组元素的引用
  • 7.1.3 一维数组的内存映像
  • 7.1.4 一维数组的应用
  • 7.2 数组作为函数的参数
  • 7.3 查找算法
  • 7.3.1 顺序查找
  • 7.3.2 二分查找
  • 7.4 排序算法
  • 7.4.1 直接选择排序法
  • 7.4.2 冒泡排序法
  • 7.5 二维数组
  • 7.5.1 二维数组的定义
  • 7.5.2 二维数组元素的引用
  • 7.5.3 二维数组的内存映像
  • 7.5.4 二维数组的应用
  • 7.5.5 二维数组作为函数的参数
  • 7.6 字符串
  • 7.6.1 字符串的存储及初始化
  • 7.6.2 字符串的输入/输出
  • 7.6.3 字符串作为函数参数
  • 7.6.4 字符串处理函数
  • 7.6.5 字符串的应用
  • 7.7 程序规范及常见问题
  • 7.7.1 数组下标必须从0开始吗
  • 7.7.2 能用表达式des=src将字符串src赋给字符串des吗
  • 7.7.3 为什么存放字符串的数组长度比字符串的实际长度多一个字符
  • 7.7.4 有了scanf函数为什么还需要gets函数
  • 7.7.5 传递字符串为什么只需要一个参数
  • 7.7.6 传递二维数组时形式参数中第二个方括号中的值为什么必须指定
  • 7.8 小结
  • 7.9 自测题
  • 7.10 实战训练
  • 第8章 指针
  • 8.1 指针的概念
  • 8.1.1 指针与间接访问
  • 8.1.2 指针变量的定义
  • 8.1.3 指针变量的操作
  • 8.2 指针与数组
  • 8.2.1 指向数组元素的指针
  • 8.2.2 指针运算与数组访问
  • 8.3 指针与函数
  • 8.3.1 指针作为参数
  • 8.3.2 返回指针的函数
  • 8.3.3 数组作为函数参数的进一步讨论
  • 8.4 动态内存分配
  • 8.4.1 动态变量
  • 8.4.2 动态变量的创建
  • 8.4.3 动态变量的消亡
  • 8.4.4 内存泄露
  • 8.4.5 查找malloc和calloc的失误
  • 8.4.6 动态变量应用
  • 8.5 指针与字符串
  • 8.5.1 用指向字符的指针变量表示字符串
  • 8.5.2 字符串作为函数的参数
  • 8.5.3 返回字符串的函数
  • 8.6 指针数组与多级指针
  • 8.6.1 指针数组
  • *8.6.2 main函数的参数
  • *8.6.3 多级指针
  • *8.6.4 二维数组与指向一维数组的指针
  • *8.6.5 动态二维数组
  • *8.7 函数指针
  • 8.7.1 指向函数的指针
  • 8.7.2 函数指针作为函数参数
  • 8.7.3 函数指针用于菜单选择
  • 8.8 编程规范与常见问题
  • 8.8.1 int x, *p=&x;有错吗
  • 8.8.2 避免使用悬空指针和未初始化的指针
  • 8.8.3 不同类型的指针之间为什么不能赋值
  • 8.8.4 指针与数组等价吗
  • 8.8.5 值传递和指针传递的区别是什么
  • 8.8.6 返回指针的函数必须确保返回值指向的变量在函数执行结束时依然存在
  • 8.8.7 使用动态变量时必须严格防止内存泄露
  • 8.9 小结
  • 8.10 自测题
  • 8.11 实战训练
  • 第9章 更多的数据类型
  • 9.1 枚举类型
  • 9.2 类型别名
  • 9.3 结构体
  • 9.3.1 结构体的概念
  • 9.3.2 结构体类型的定义
  • 9.3.3 结构体类型变量的定义
  • 9.3.4 结构体类型变量的使用
  • 9.3.5 结构体与函数
  • 9.4 链表
  • 9.4.1 链表的概念
  • 9.4.2 单链表的存储
  • 9.4.3 单链表的操作
  • 9.4.4 带头结点的单链表
  • 9.4.5 单链表示例
  • 9.5 共用体
  • 9.5.1 共用体概念和共用体类型的定义
  • 9.5.2 共用体类型变量的定义及初始化
  • 9.5.3 共用体变量的使用
  • 9.6 编程规范及常见问题
  • 9.6.1 结构体中每个字段的类型都不相同吗
  • 9.6.2 单链表中为什么要引入头结点
  • 9.6.3 引入结构体有什么用处
  • 9.6.4 结构体和共用体的区别
  • 9.6.5 结构体和共用体类型定义时能否省略类型名
  • 9.6.6 结构体类型定义与结构体变量定义
  • 9.7 小结
  • 9.8 自测题
  • 9.9 实战训练
  • 第10章 位运算与位段
  • 10.1 位运算
  • 10.1.1 “按位与”运算
  • 10.1.2 “按位或”运算
  • 10.1.3 “按位异或”运算
  • 10.1.4 “按位取反”运算
  • 10.1.5 “左移”运算
  • 10.1.6 “右移”运算
  • 10.1.7 位运算与赋值运算
  • 10.1.8 不同长度的数据进行位运算
  • 10.2 位段
  • 10.2.1 位段的概念及定义
  • 10.2.2 位段的引用
  • 10.3 编程规范及常见问题
  • 10.3.1 检验某数中指定位的值
  • 10.3.2 将数据中的某一位的值置成0
  • 10.3.3 将数据中的某一位的值置成1
  • 10.3.4 将数据中的某一位的值取反
  • 10.4 小结
  • 10.5 自测题
  • 10.6 实战训练
  • 第11章 文件
  • 11.1 内存与外存
  • 11.2 文件的概念
  • 11.2.1 什么是文件
  • 11.2.2 ASCII文件与二进制文件
  • 11.3 文件缓冲与文件指针
  • 11.4 文件的打开与关闭
  • 11.4.1 打开文件
  • 11.4.2 关闭文件
  • 11.5 ASCII文件的读写
  • 11.5.1 字符读写函数
  • 11.5.2 字符串读写函数
  • 11.5.3 数值读写函数
  • 11.6 二进制文件的读写
  • 11.6.1 fwrite函数
  • 11.6.2 fread函数
  • 11.7 文件的顺序访问
  • 11.7.1 什么是文件的顺序访问
  • 11.7.2 feof函数
  • 11.8 文件的随机访问
  • 11.8.1 文件定位指针
  • 11.8.2 rewind函数
  • 11.8.3 fseek函数
  • 11.8.4 ftell函数
  • *11.9 文件操作与控制台操作
  • 11.10 编程规范及常见问题
  • 11.10.1 良好的文件使用习惯
  • 11.10.2 文件打开方式选择
  • 11.10.3 文件指针与文件定位指针
  • 11.10.4 流与文件
  • 11.11 小结
  • 11.12 自测题
  • 11.13 实战训练
  • 第12章 软件开发过程
  • 12.1 结构化程序设计思想
  • 12.2 自顶向下分解示例:“猜硬币”游戏
  • 12.2.1 顶层分解
  • 12.2.2 prn_instruction函数的实现
  • 12.2.3 play函数的实现
  • 12.2.4 get_call_from_user函数的实现
  • 12.3 模块划分示例:“石头、剪刀、布”游戏
  • 12.3.1 自顶向下分解
  • 12.3.2 模块划分
  • 12.3.3 头文件的设计
  • 12.3.4 模块实现
  • 12.4 设计自己的库示例:随机函数库的设计和实现
  • 12.4.1 随机函数库的功能设计
  • 12.4.2 接口文件的设计
  • 12.4.3 实现文件的设计
  • 12.5 随机函数库的应用示例:模拟龟兔赛跑
  • 12.5.1 自顶向下分解
  • 12.5.2 模块划分及实现
  • 12.6 软件开发过程
  • 12.6.1 软件危机
  • 12.6.2 软件工程
  • 12.7 软件开发过程示例:学生管理系统的设计与实现
  • 12.7.1 需求分析
  • 12.7.2 概要设计
  • 12.7.3 详细设计
  • 12.7.4 编码与测试
  • 12.8 软件开发示例:网上书店的设计
  • 12.8.1 需求分析
  • 12.8.2 概要设计
  • 12.8.3 详细设计
  • 12.9 编程规范及常见问题
  • 12.9.1 头文件的格式
  • 12.9.2 实现一个库为什么需要两个文件
  • 12.9.3 慎用全局变量
  • 12.10 小结
  • 12.11 自测题
  • 12.12 实战训练
  • 第13章 通用算法设计
  • 13.1 枚举法
  • 13.2 贪婪法
  • 13.3 分治法
  • 13.4 动态规划
  • 13.5 回溯法
  • 13.6 小结
  • 13.7 实战训练
  • 附录
  • 附录1 第1章自测题答案
  • 附录2 第2章自测题答案
  • 附录3 第3章自测题答案
  • 附录4 第4章自测题答案
  • 附录5 第5章自测题答案
  • 附录6 第6章自测题答案
  • 附录7 第7章自测题答案
  • 附录8 第8章自测题答案
  • 附录9 第9章自测题答案
  • 附录10 第10章自测题答案
  • 附录11 第11章自测题答案
  • 附录12 第12章自测题答案
  • 附录13 ASCII编码表
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。