互联网
类型
可以朗读
语音朗读
516千字
字数
2019-06-01
发行日期
展开全部
主编推荐语
更适合95后的C语言编程入门书。
内容简介
本书循序渐进、由浅入深地讲解了C语言开发的技术。全书共25章。本书不仅介绍了C语言的基础和核心知识,还讲解了C语言中的重点和难点。此外,本书还通过4个综合实例,介绍了C语言在综合项目中的应用。全书内容以“技术解惑”和“范例演练”贯穿全书,读者全面掌握C语言。
本书不但适用C语言的初学者,也适合有C语言基础的读者学习,还可以作为大专院校相关专业的师生用书和培训学校的教材。
目录
- 版权信息
- 内容提要
- 前言
- 选择一本合适的书
- 本书特色
- 本书内容
- 各章的内容分布
- 本书读者对象
- 资源与支持
- 配套资源
- 提交勘误
- 与我们联系
- 关于异步社区和异步图书
- 第1章 C语言之定位
- 1.1 计算机应用基础
- 1.1.1 中央处理器
- 1.1.2 位和字节
- 1.1.3 二进制
- 1.1.4 编码格式
- 1.2 C语言的诞生
- 1.3 第一印象的建立
- 1.4 理解编译系统——学习的第一步
- 1.5 技术解惑
- 1.5.1 学习C语言还有用吗
- 1.5.2 怎样学好C语言
- 1.5.3 学好C语言的建议
- 1.6 课后练习
- 第2章 C语言开发工具详解
- 2.1 用DOS开发C程序
- 2.1.1 安装Turbo C 3.0
- 2.1.2 使用Turbo C 3.0
- 2.2 在Windows环境下使用Visual Studio 2017
- 2.2.1 安装Visual Studio 2017
- 2.2.2 使用Visual Studio 2017开发一个C程序
- 2.3 使用轻量级开发工具DEV C++
- 2.3.1 安装DEV C++
- 2.3.2 使用DEV C++运行一个C程序
- 2.4 使用Vsiual C++ 6.0开发C程序
- 2.5 使用手机开发C程序
- 2.6 技术解惑
- 2.6.1 安装Visual Studio 2017时遇到的常见问题
- 2.6.2 在Windows 7中安装Visual Studio时遇到的常见问题
- 2.7 课后练习
- 第3章 程序员基本素质的培养
- 3.1 养成好的命名习惯
- 3.2 C程序文件结构
- 3.2.1 C程序的组成部分
- 3.2.2 C程序的格式总结
- 3.3 养成好的C语言编程风格
- 3.3.1 随时使用缩进格式
- 3.3.2 注意大括号的位置
- 3.3.3 函数的规则
- 3.3.4 注意注释
- 3.4 如何成为一名优秀的程序员
- 3.5 技术解惑
- 3.6 课后练习
- 第4章 C语言语法
- 4.1 标识符和关键字
- 4.2 最基本的数据类型
- 4.3 常量和变量
- 4.3.1 常量
- 4.3.2 变量
- 4.4 整型数据
- 4.4.1 整型常量
- 4.4.2 整型变量
- 4.5 实型数据
- 4.5.1 实型常量
- 4.5.2 实型变量
- 4.5.3 实型常量的类型
- 4.6 字符型数据
- 4.6.1 字符常量
- 4.6.2 字符串常量
- 4.6.3 字符变量
- 4.7 初始化变量
- 4.8 整型、实型和字符型数据间的运算总结
- 4.8.1 自动转换
- 4.8.2 强制转换
- 4.9 技术解惑
- 4.9.1 在C语言中无符号整型变量和有符号整型变量的定义
- 4.9.2 在C语言中字符变量的含义
- 4.9.3 如何理解字符型数据的取值范围
- 4.9.4 怎样将带小数点的字符型数据转换成浮点型
- 4.10 课后练习
- 第5章 运算符和表达式
- 5.1 运算符和表达式的概述
- 5.1.1 运算符的种类
- 5.1.2 运算符的优先级
- 5.2 算术运算符和算术表达式
- 5.2.1 单目运算符
- 5.2.2 双目运算符
- 5.3 赋值运算符和赋值表达式
- 5.3.1 基本赋值运算符
- 5.3.2 复合赋值运算符
- 5.3.3 赋值表达式
- 5.4 关系运算符和关系表达式
- 5.4.1 关系运算符
- 5.4.2 关系表达式
- 5.5 逻辑运算符和逻辑表达式
- 5.5.1 逻辑运算符
- 5.5.2 逻辑表达式
- 5.6 逗号运算符和逗号表达式
- 5.6.1 逗号运算符
- 5.6.2 逗号表达式
- 5.7 求字节数的运算符
- 5.8 技术解惑
- 5.8.1 C语言运算符优先级的详情
- 5.8.2 少数运算符在规定表达式中的求值顺序
- 5.8.3 在C语言中是否可以进行混合运算
- 5.8.4 在一个逻辑条件语句中常数项永远在左侧
- 5.8.5 赋值处理的自动类型转换
- 5.9 课后练习
- 第6章 输入和输出
- 6.1 C语句的初步知识
- 6.1.1 C语句简介
- 6.1.2 赋值语句
- 6.2 打通任督二脉——数据输入和输出
- 6.2.1 putchar函数
- 6.2.2 getchar函数
- 6.2.3 printf函数
- 6.2.4 scanf函数
- 6.2.5 puts函数
- 6.2.6 C11标准函数gets_s
- 6.3 技术解惑
- 6.3.1 gets_s函数和scanf函数的区别
- 6.3.2 克服gets_s函数的缺陷
- 6.3.3 C语言的输入和输出问题
- 6.4 课后练习
- 第7章 流程控制
- 7.1 最常见的顺序结构
- 7.2 选择结构
- 7.2.1 单分支结构语句
- 7.2.2 双分支结构语句
- 7.2.3 多分支结构语句
- 7.2.4 条件运算符和条件表达式
- 7.3 循环结构
- 7.3.1 for语句
- 7.3.2 while语句
- 7.3.3 do…while语句
- 7.3.4 正确对待goto语句
- 7.3.5 break/continue跳跃
- 7.3.6 死循环/退出程序
- 7.4 技术解惑
- 7.4.1 循环中的低效问题
- 7.4.2 分析C语言循环语句的效率
- 7.4.3 使用for循环语句的注意事项
- 7.5 课后练习
- 第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 字符串连接函数
- 8.4.6 其他的字符串函数
- 8.4.7 将字符串转换成数值的函数
- 8.5 字符处理函数
- 8.5.1 字符检测函数
- 8.5.2 字符大小写转换函数
- 8.6 技术解惑
- 8.6.1 数组的下标总是从0开始吗
- 8.6.2 C语言对数组的处理非常有效吗
- 8.6.3 初始化一维数组的注意事项
- 8.6.4 冒泡排序
- 8.7 课后练习
- 第9章 函数
- 9.1 C函数的基础知识
- 9.1.1 函数的分类
- 9.1.2 函数的定义
- 9.2 函数声明和函数原型
- 9.3 函数的参数
- 9.3.1 形参和实参
- 9.3.2 以数组名作为函数的参数
- 9.3.3 以数组作为函数的参数
- 9.4 函数的返回值
- 9.5 函数的调用
- 9.5.1 函数调用的格式
- 9.5.2 函数的调用方式
- 9.5.3 被调函数的声明方式
- 9.5.4 对调用函数的方式进行深入分析
- 9.6 函数的嵌套调用和递归调用
- 9.6.1 函数的嵌套调用
- 9.6.2 函数的递归调用
- 9.7 变量的作用域和生存期
- 9.7.1 变量作用域
- 9.7.2 静态存储变量和动态存储变量
- 9.8 C的内部函数和外部函数
- 9.8.1 内部函数
- 9.8.2 外部函数
- 9.9 库函数
- 9.10 技术解惑
- 9.10.1 通过Turbo C深入分析项目文件
- 9.10.2 要尽量避免不必要的函数调用
- 9.10.3 请确保函数的声明和定义是静态的
- 9.10.4 避免过长的main()函数
- 9.10.5 函数的地址也是数据
- 9.10.6 说明函数的时机
- 9.10.7 一个函数可以有多少个参数
- 9.10.8 如果一个函数没有返回值,是否需要加入return语句
- 9.10.9 在程序退出main函数之后还有可能执行一部分代码
- 9.10.10 exit()函数和return语句的差异
- 9.11 课后练习
- 第10章 指针
- 10.1 基本概念
- 10.2 变量的指针和指向变量的指针变量
- 10.2.1 声明指针变量
- 10.2.2 指针变量的初始化
- 10.2.3 指针变量的引用
- 10.2.4 关于指针运算符的说明
- 10.2.5 指针变量的运算
- 10.2.6 以指针变量作为函数参数
- 10.2.7 void类型的指针
- 10.3 指针和数组
- 10.3.1 数组元素的指针
- 10.3.2 指向一维数组元素的指针变量
- 10.3.3 通过指针引用数组元素
- 10.3.4 以数组名作为函数参数
- 10.4 指针和多维数组
- 10.4.1 多维数组的地址
- 10.4.2 指向多维数组的指针变量
- 10.5 指针和字符串
- 10.5.1 指针访问字符串
- 10.5.2 以字符串指针作为函数参数
- 10.5.3 字符串指针变量与字符数组的区别
- 10.6 指针数组和多级指针
- 10.6.1 指针数组
- 10.6.2 多级指针的定义和应用
- 10.6.3 指向指针的指针
- 10.6.4 main函数的参数
- 10.7 指针函数和函数指针
- 10.7.1 指针函数
- 10.7.2 函数指针
- 10.8 技术解惑
- 10.8.1 初始化指针时的注意事项
- 10.8.2 为指针赋值时的注意事项
- 10.8.3 当指针用于数组时的注意事项
- 10.8.4 在结构中使用指针时的注意事项
- 10.8.5 避免不必要的内存引用
- 10.8.6 避免悬空指针和野指针
- 10.8.7 数组下标与指针的效率解析
- 10.8.8 使用指针时的常见错误
- 10.9 课后练习
- 第11章 数据的熔炉——结构体、共用体和枚举
- 11.1 结构体
- 11.1.1 定义结构体类型
- 11.1.2 定义结构体类型变量
- 11.1.3 引用结构体变量
- 11.1.4 初始化结构体变量
- 11.2 结构体数组
- 11.2.1 定义结构体数组
- 11.2.2 初始化结构体数组
- 11.2.3 引用结构体数组
- 11.3 结构体指针
- 11.3.1 定义结构体指针变量
- 11.3.2 初始化结构体指针变量
- 11.3.3 引用结构体指针变量
- 11.3.4 指向结构变量的指针
- 11.3.5 指向结构体数组的指针
- 11.4 在函数中使用结构体
- 11.4.1 结构体变量和结构体指针可以作为函数参数
- 11.4.2 函数可以返回结构体类型的值
- 11.5 共用体(联合)
- 11.5.1 定义共用体和共用体变量
- 11.5.2 引用和初始化共用体变量
- 11.6 枚举
- 11.6.1 定义枚举类型
- 11.6.2 定义枚举变量
- 11.6.3 引用枚举变量
- 11.7 typedef定义类型的作用
- 11.7.1 类型定义符typedef的基础
- 11.7.2 使用typedef
- 11.8 技术解惑
- 11.8.1 可以省略结构名吗
- 11.8.2 是否可以定义一种通用数据类型以存储任意类型的数据
- 11.8.3 结构和共用体的区别
- 11.8.4 定义C结构体的问题
- 11.9 课后练习
- 第12章 链表
- 12.1 动态内存分配
- 12.1.1 动态内存分配的作用
- 12.1.2 实现动态内存分配及管理的方法
- 12.2 链表详解
- 12.2.1 链表简介
- 12.2.2 单向链表
- 12.2.3 创建一个链表
- 12.2.4 删除整个链表
- 12.2.5 在链表中插入节点
- 12.2.6 在链表中删除节点
- 12.2.7 双向链表
- 12.2.8 循环链表
- 12.3 技术解惑
- 12.3.1 链表的总结
- 12.3.2 面试题——判断单链表是否有环
- 12.3.3 面试题——实现单链表逆置
- 12.4 课后练习
- 第13章 位运算
- 13.1 位运算符和位运算
- 13.1.1 按位与运算
- 13.1.2 按位或运算
- 13.1.3 按位异或运算
- 13.1.4 取反运算
- 13.1.5 左移运算
- 13.1.6 右移运算
- 13.1.7 位运算的应用实例
- 13.2 位域
- 13.2.1 位域的定义和位域变量的说明
- 13.2.2 位域的使用
- 13.3 技术解惑
- 13.3.1 二进制补码的运算公式
- 13.3.2 面试题——从某个数中取出指定的某些位
- 13.3.3 位域的内存对齐原则
- 13.4 课后练习
- 第14章 预编译处理
- 14.1 预编译的基础
- 14.2 宏定义
- 14.2.1 不带参数的宏定义
- 14.2.2 带参数的宏定义
- 14.2.3 字符串化运算符
- 14.2.4 并接运算符
- 14.3 文件包含
- 14.4 条件编译
- 14.4.1 #ifdef… #else…#endif命令
- 14.4.2 #if defined… #else…#endif
- 14.4.3 #ifndef… #else…#endif
- 14.4.4 #if !defined… #else…#endif
- 14.4.5 #ifdef…#elif… #elif…#else… #endif
- 14.5 技术解惑
- 14.5.1 还有其他预编译指令吗
- 14.5.2 带参的宏定义和函数不同
- 14.5.3 C语言中预处理指令的总结
- 14.5.4 预编译指令的本质
- 14.5.5 sizeof(int)在预编译阶段是不会求值的
- 14.5.6 多行预处理指令的写法
- 14.6 课后练习
- 第15章 文件操作
- 15.1 文件
- 15.1.1 文本文件
- 15.1.2 文件分类
- 15.2 文件指针
- 15.3 文件的打开与关闭
- 15.3.1 打开文件
- 15.3.2 关闭文件
- 15.4 文件读写
- 15.4.1 字符读写函数
- 15.4.2 字符串读写函数
- 15.4.3 格式化读写函数
- 15.4.4 数据块读写函数
- 15.4.5 其他读写函数
- 15.5 文件的随机读写
- 15.5.1 fseek函数
- 15.5.2 rewind函数
- 15.5.3 ftell函数
- 15.6 文件管理函数
- 15.6.1 删除文件
- 15.6.2 重命名文件
- 15.6.3 复制文件
- 15.7 文件状态检测函数
- 15.7.1 feof函数
- 15.7.2 ferror函数
- 15.7.3 clearerr函数
- 15.8 Win32 API中的文件操作函数
- 15.8.1 创建和打开文件
- 15.8.2 读取、写入和删除文件
- 15.9 技术解惑
- 15.9.1 文件指针是文件内部的位置指针吗
- 15.9.2 fseek函数的换行问题
- 15.9.3 怎样解决gets函数的溢出问题
- 15.9.4 feof函数会多读一个数据吗
- 15.9.5 流和文件的关系
- 15.10 课后练习
- 第16章 错误和程序调试
- 16.1 常见错误分析
- 16.1.1 语法错误
- 16.1.2 逻辑错误(语义错误)
- 16.1.3 内存错误
- 16.2 错误的检出与分离
- 16.3 调试时的注意事项
- 16.3.1 上机前要先熟悉程序的运行环境
- 16.3.2 在编程时要为调试做好准备
- 16.4 技术解惑
- 16.4.1 编译通过并不代表运行正确
- 16.4.2 两段代码的编译差别
- 16.4.3 调试程序的方法与技巧
- 16.5 课后练习
- 第17章 内存管理
- 17.1 C语言中的内存模型
- 17.2 栈和堆
- 17.2.1 栈操作
- 17.2.2 堆操作
- 17.3 动态管理
- 17.3.1 使用函数malloc动态分配内存空间
- 17.3.2 使用函数calloc分配内存空间并初始化
- 17.3.3 使用函数realloc重新分配内存
- 17.3.4 使用函数free释放内存空间
- 17.4 课后练习
- 第18章 C语言高级编程技术
- 18.1 C语言的高级编程技术
- 18.2 分析文本的屏幕输出和键盘输入
- 18.2.1 实现文本的屏幕输出
- 18.2.2 实现键盘输入
- 18.2.3 应用实例
- 18.3 分析图形显示方式和鼠标输入
- 18.3.1 初始化图形模式
- 18.3.2 清屏和恢复显示函数
- 18.3.3 建立独立图形程序
- 18.3.4 基本绘图函数
- 18.3.5 线性函数
- 18.3.6 颜色控制函数
- 18.3.7 填色函数和画图函数
- 18.3.8 图形窗口函数
- 18.3.9 分析图形方式下的文本输出函数
- 18.4 菜单设计
- 18.5 课后练习
- 第19章 算法——抓住程序的灵魂
- 19.1 我们对算法的理解
- 19.1.1 算法是程序的灵魂
- 19.1.2 何谓算法
- 19.1.3 算法的特性
- 19.2 算法表示法——流程图
- 19.3 枚举算法
- 19.3.1 枚举算法的基础
- 19.3.2 实战演练——百钱买百鸡
- 19.3.3 实战演练——填写运算符
- 19.4 递推算法
- 19.4.1 递推算法的基础
- 19.4.2 实战演练——斐波那契数列
- 19.4.3 实战演练——银行存款
- 19.5 递归算法
- 19.5.1 递归算法的基础
- 19.5.2 实战演练——汉诺塔
- 19.5.3 实战演练——阶乘
- 19.6 分治算法
- 19.6.1 分治算法的基础
- 19.6.2 实战演练——大数相乘
- 19.6.3 实战演练——欧洲冠军杯比赛日程安排
- 19.7 贪心算法
- 19.7.1 贪心算法的基础
- 19.7.2 实战演练——装箱
- 19.7.3 实战演练——找零方案
- 19.8 试探法算法
- 19.8.1 试探法算法的基础
- 19.8.2 实战演练——八皇后
- 19.8.3 实战演练——体彩29选7的组合
- 19.9 迭代算法
- 19.9.1 迭代算法的基础
- 19.9.2 实战演练——求平方根
- 19.10 模拟算法
- 19.10.1 模拟算法的思路
- 19.10.2 实战演练——猜数字游戏
- 19.10.3 实战演练——掷骰子游戏
- 19.11 技术解惑
- 19.11.1 衡量算法的标准
- 19.11.2 选择使用枚举法的时机
- 19.11.3 递推和递归的差异
- 19.11.4 分治法解决问题的类型
- 19.11.5 分治算法的机理
- 19.11.6 贪婪算法并不是解决问题最优方案的原因
- 19.11.7 回溯算法是否会影响算法效率
- 19.11.8 递归算法与迭代算法的区别
- 19.12 课后练习
- 第20章 数据结构
- 20.1 使用线性表
- 20.1.1 线性表的特性
- 20.1.2 顺序表操作
- 20.1.3 实战演练——使用顺序表操作函数
- 20.2 队列
- 20.2.1 队列的定义
- 20.2.2 实战演练——实现一个排号程序
- 20.3 栈
- 20.3.1 栈的定义
- 20.3.2 实战演练——实现栈操作
- 20.4 技术解惑
- 20.4.1 线性表插入操作的时间复杂度
- 20.4.2 线性表删除操作的时间复杂度
- 20.4.3 线性表按值查找操作的时间复杂度
- 20.4.4 线性表链接存储操作的11种算法
- 20.4.5 堆和栈的区别
- 20.5 课后练习
- 第21章 网络编程技术
- 21.1 OSI 7层网络模型
- 21.2 TCP/IP
- 21.2.1 IP
- 21.2.2 TCP
- 21.2.3 UDP
- 21.2.4 ICMP
- 21.3 使用C语言开发网络项目
- 21.3.1 网络编程方式
- 21.3.2 网络通信的基本流程
- 21.3.3 搭建开发环境
- 21.3.4 两个常用的数据结构
- 21.3.5 Windows套接字的基础
- 21.4 常用的Winsock函数
- 21.4.1 WSAStartup函数
- 21.4.2 socket函数
- 21.4.3 inet_addr函数
- 21.4.4 gethostbyname函数
- 21.4.5 bind函数
- 21.4.6 connect函数
- 21.4.7 select函数
- 21.4.8 recv函数
- 21.4.9 sendto函数
- 21.5 MAC地址
- 21.6 NetBIOS编程
- 21.6.1 处理过程
- 21.6.2 NetBIOS命令
- 21.6.3 NetBIOS名字解析
- 21.6.4 NetBEUI
- 21.6.5 NetBIOS的范围
- 21.6.6 NetBIOS控制块
- 21.7 实战演练——获取当前机器的MAC地址
- 21.7.1 选择开发工具
- 21.7.2 设计MFC窗体
- 21.7.3 具体编码
- 第22章 初入江湖——设计游戏项目
- 22.1 游戏功能描述
- 22.2 游戏总体设计
- 22.2.1 功能模块设计
- 22.2.2 数据结构设计
- 22.2.3 构成函数介绍
- 22.3 游戏的具体实现
- 22.3.1 预处理
- 22.3.2 主函数
- 22.3.3 初始化界面处理
- 22.3.4 时钟中断处理
- 22.3.5 成绩、速度和帮助处理
- 22.3.6 满行处理
- 22.3.7 方块显示和消除处理
- 22.3.8 方块判断处理
- 第23章 风云再起——设计网络项目
- 23.1 系统功能描述
- 23.2 系统总体设计
- 23.2.1 功能模块设计
- 23.2.2 数据结构设计
- 23.2.3 构成函数介绍
- 23.3 系统的具体实现
- 23.3.1 预处理
- 23.3.2 初始化处理
- 23.3.3 控制模块
- 23.3.4 数据报解读处理
- 23.3.5 Ping测试处理
- 23.3.6 主函数
- 第24章 炉火纯青——学生成绩管理系统
- 24.1 系统总体描述
- 24.1.1 项目开发的目标
- 24.1.2 项目的意义
- 24.1.3 系统功能描述
- 24.2 系统总体设计
- 24.2.1 功能模块设计
- 24.2.2 数据结构设计
- 24.2.3 构成函数介绍
- 24.3 系统的具体实现
- 24.3.1 预处理
- 24.3.2 主函数
- 24.3.3 系统主菜单函数
- 24.3.4 表格显示信息
- 24.3.5 信息查找定位
- 24.3.6 格式化输入数据
- 24.3.7 增加学生记录
- 24.3.8 查询学生记录
- 24.3.9 删除学生记录
- 24.3.10 修改学生记录
- 24.3.11 插入学生记录
- 24.3.12 统计学生记录
- 24.3.13 排序处理
- 24.3.14 存储学生信息
- 第25章 笑傲江湖——使用C51实现跑马灯程序
- 25.1 单片机C语言基础
- 25.1.1 单片机C语言的优越性
- 25.1.2 C51的数据类型
- 25.1.3 C51数据的存储结构
- 25.1.4 C51运算符和表达式
- 25.1.5 C51的中断函数
- 25.2 跑马灯设计实例
- 25.2.1 基本跑马灯的实现
- 25.2.2 矩形波发生器
- 25.2.3 用定时器/计数器产生矩形波
- 25.3 一个完整的跑马灯程序
- 25.3.1 电路设计
- 25.3.2 程序设计
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。