描述
开 本: 16开纸 张: 轻型纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121336386丛书名: 21天学编程系列
√ 细致体贴的知识点讲解;
√ 理论联系实际的学习模式;
√ 141个典型案例、1个项目案例、48个练习题、71个面试题:
√ 一线开发人员全程贴心讲解,轻松上手与提高。
第1章 C语言与程序概述
1.1 C语言的历史沿革
1.1.1 C语言的诞生
1.1.2 C语言的发展历程
1.1.3 C语言的特点
1.1.4 第一个C程序——Hello, world!
1.2 数据结构与算法
1.2.1 什么是数据结构
1.2.2 什么是算法
1.3 程序设计概述
1.3.1 结构化程序设计
1.3.2 三种基本结构
1.3.3 算法描述方法
1.4 小结
1.5 习题
第2章 C语言编程准备
2.1 C程序简介
2.1.1 简单C程序示例
2.1.2 C程序的特点
2.1.3 标识符与关键字
2.1.4 C程序的执行步骤
2.2 C程序开发环境
2.2.1 Turbo C
2.2.2 Visual C 2017
2.2.3 GCC 3.2.2
2.3 小结
2.4 习题
第2篇 C语言基础篇
第3章 常量与变量
3.1 常量和变量概述
3.1.1 常量
3.1.2 变量
3.2 变量的使用
3.2.1 声明变量
3.2.2 定义变量
3.2.3 使用extern声明变量
3.2.4 变量赋值及初始化
3.2.5 地址操作符和指针操作符
3.3 格式化输入/输出
3.3.1 标准输出函数——printf函数
3.3.2 标准输入函数——scanf函数
3.4 数据类型简介
3.5 小结
3.6 习题
第4章 基本数据类型
4.1 整型数据类型
4.1.1 字节长度
4.1.2 符号修饰符
4.1.3 整型常量
4.1.4 整型变量
4.1.5 存储方式
4.1.6 数值范围
4.2 字符型数据类型
4.2.1 字节长度
4.2.2 字符常量
4.2.3 字符变量
4.2.4 存储方式
4.3 浮点型数据类型
4.3.1 字节长度
4.3.2 浮点型常量
4.3.3 浮点型变量
4.3.4 精度
4.3.5 数值范围
4.3.6 存储方式
4.4 用户自定义类型
4.4.1 typedef的标准形式
4.4.2 合理使用typedef
4.5 限定词const与volatile
4.5.1 使用const
4.5.2 使用volatile
4.6 小结
4.7 习题
第5章 表达式与操作符
5.1 表达式和语句
5.1.1 表达式
5.1.2 语句
5.1.3 复合语句
5.1.4 C语言的操作符
5.2 赋值操作符与赋值表达式
5.2.1 赋值操作符
5.2.2 赋值操作符的结合性
5.2.3 左值和右值
5.2.4 隐式类型转换
5.2.5 强制类型转换
5.3 运算操作符与运算表达式
5.3.1 运算操作符
5.3.2 符号操作符
5.3.3 优先级与结合性
5.3.4 数值运算中的类型转换
5.3.5 复合赋值操作符
5.4 自增、自减操作符
5.4.1 自增操作符
5.4.2 自减操作符
5.4.3 优先级与结合性
5.4.4 自增、自减操作符的编译过程
5.4.5 注意事项
5.5 关系操作符与关系表达式
5.5.1 关系操作符
5.5.2 关系表达式的值
5.5.3 优先级与结合性
5.6 逻辑操作符与逻辑表达式
5.6.1 逻辑操作符
5.6.2 逻辑表达式的值
5.6.3 优先级和结合性
5.6.4 逻辑表达式
5.7 逗号操作符与逗号表达式
5.7.1 逗号操作符
5.7.2 逗号表达式的值
5.8 操作符优先级和结合性
5.8.1 优先级和结合性
5.8.2 优先级的改变
5.8.3 注意事项
5.9 小结
5.10 习题
第3篇 结构编程篇
第6章 选择结构
6.1 if语句
6.1.1 if语句的基本形式
6.1.2 else和if的配对使用
6.1.3 选择结构中的不平等分支
6.1.4 条件表达式中的=与==
6.2 switch语句
6.2.1 switch语句的基本形式
6.2.2 break语句
6.2.3 else if语句和switch语句
6.2.4 switch中的标号
6.2.5 使用具名常量组成标号
6.3 条件操作符与条件表达式
6.3.1 条件操作符的基本形式
6.3.2 条件表达式与if-else
6.3.3 条件表达式中的类型转换
6.3.4 条件表达式的嵌套
6.4 逻辑表达式的隐式选择
6.4.1 逻辑表达式的特点
6.4.2 隐式选择的作用
6.4.3 巧用隐式选择
6.5 小结
6.6 习题
第7章 循环结构
7.1 for语句
7.1.1 for语句的基本形式
7.1.2 for头中的三个表达式
7.1.3 for头中的逗号表达式
7.1.4 for语句的嵌套
7.1.5 for语句示例
7.2 while语句
7.2.1 while语句的基本形式
7.2.2 while语句与for语句
7.2.3 while语句示例
7.3 do-while语句
7.3.1 do-while语句的基本形式
7.3.2 do-while语句与while语句
7.3.3 do-while语句示例
7.4 continue语句与break语句
7.4.1 continue语句
7.4.2 continue语句与if语句
7.4.3 break语句
7.4.4 使用break语句终止多层循环
7.5 goto语句
7.5.1 goto语句的基本形式
7.5.2 使用goto语句构成循环
7.5.3 注意事项
7.6 循环结构与选择结构的嵌套
7.6.1 if-while与while-if
7.6.2 使用选择结构包含循环结构
7.7 小结
7.8 习题
第4篇 数组和字符串篇
第8章 数组
8.1 一维数组
8.1.1 定义一维数组
8.1.2 访问一维数组元素
8.1.3 初始化一维数组
8.1.4 数组的存储形式
8.1.5 注意事项
8.1.6 一维数组示例
8.2 二维数组
8.2.1 定义二维数组
8.2.2 访问二维数组元素
8.2.3 二维数组的存储方式
8.2.4 初始化二维数组
8.2.5 二维数组示例
8.3 多维数组
8.3.1 定义多维数组
8.3.2 多维数组示例
8.4 小结
8.5 习题
第9章 字符串
9.1 字符数组
9.1.1 字符数组的定义
9.1.2 字符数组的初始化
9.1.3 二维字符数组
9.1.4 字符数组示例
9.2 字符串类型
9.2.1 字符串常量
9.2.2 字符串变量
9.2.3 格式化输出字符串
9.2.4 格式化输入字符串
9.3 字符串应用示例
9.3.1 取字符串长度
9.3.2 统计单词数
9.3.3 颠倒单词顺序
9.3.4 改进的颠倒单词顺序实现
9.4 小结
9.5 习题
第5篇 函数篇
第10章 函数
10.1 函数概述
10.1.1 模块化编程
10.1.2 定义函数
10.1.3 调用函数
10.1.4 函数使用示例
10.1.5 改进的算术运算函数
10.2 函数声明
10.2.1 声明的形式
10.2.2 声明与定义
10.3 函数值与形参列表
10.3.1 函数值类型
10.3.2 形参列表
10.3.3 函数返回值
10.3.4 const形参
10.4 函数体
10.4.1 函数体的变量定义
10.4.2 检查形参
10.4.3 return语句
10.5 main函数
10.5.1 main函数的声明
10.5.2 函数值类型
10.5.3 带参数的main函数
10.6 小结
10.7 习题
第11章 函数与文件
11.1 多文件的程序
11.1.1 文件的类型
11.1.2 C工程的组织结构
11.1.3 一个简单的多文件工程
11.2 实现多文件工程
11.2.1 Turbo C下实现多文件工程
11.2.2 Visual C 2017下实现多文件工程
11.2.3 GCC 3.2.2下实现多文件工程
11.3 函数的调用
11.3.1 嵌套调用
11.3.2 递归调用
11.3.3 递归调用示例
11.4 外部函数与内部函数
11.4.1 外部函数
11.4.2 内部函数
11.4.3 应用示例
11.5 小结
11.6 习题
第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.3 变量的存储类别
12.3.1 内存存储区
12.3.2 auto变量
12.3.3 static变量
12.3.4 register变量
12.3.5 extern变量
12.4 小结
12.5 习题
第13章 字符串处理函数
13.1 输入/输出函数
13.1.1 字符输入/输出函数
13.1.2 字符串输入/输出函数
13.2 复制和拼接函数
13.2.1 字符串复制函数
13.2.2 字符串拼接函数
13.3 比较和转换函数
13.3.1 字符串比较函数
13.3.2 字符串转换函数
13.4 小结
13.5 习题
第6篇 指针篇
第14章 指针
14.1 指针概述
14.1.1 访问内存的两种方式
14.1.2 指针的概念
14.1.3 指针变量的定义
14.2 指针的使用
14.2.1 指针变量的赋值
14.2.2 将指针变量赋值为整数
14.2.3 初始化指针变量
14.2.4 const指针
14.3 指针与函数
14.3.1 指针形参
14.3.2 指针型函数
14.3.3 函数型指针
14.4 void型指针
14.5 小结
14.6 习题
第15章 再论指针
15.1 指针与数组
15.1.1 指向数组元素的指针
15.1.2 指针访问数组
15.1.3 数组指针和数组变量
15.1.4 数组指针作为函数形参
15.1.5 调用含数组形参的函数
15.2 指针与二维数组
15.2.1 二维数组的地址
15.2.2 指针法访问二维数组
15.2.3 二维数组形参
15.3 指针与字符
15.3.1 字符指针
15.3.2 字符指针应用示例
15.3.3 字符指针数组
15.4 小结
15.5 习题
第7篇 高级应用篇
第16章 堆管理
16.1 动态内存管理
16.1.1 分配内存空间
16.1.2 释放内存空间
16.2 其他分配函数
16.2.1 calloc函数
16.2.2 realloc函数
16.3 动态数组
16.4 小结
16.5 习题
第17章 位运算操作符
17.1 位运算概述
17.2 位运算操作符语法
17.2.1 取反操作符(~)
17.2.2 位或操作符(|)
17.2.3 位与操作符(&)
17.2.4 异或操作符(^)
17.
“21天学编程系列”自2009年1月上市以来一直受到广大读者的青睐。该系列中的大部分图书从一上市就登上了编程类图书销售排行榜的前列,很多大、中专院校也将该系列中的一些图书作为教材使用,目前这些图书已经多次印刷、改版。可以说,“21天学编程系列”是自2009年以来,国内原创计算机编程图书最有影响力的品牌之一。
为了使该系列图书能紧跟技术和教学的发展,更加适合读者学习和学校教学,我们结合最新技术和读者的建议,对该系列图书进行了改版(即第5版)。本书便是该系列中的C语言分册。
本书有何特色
1.细致体贴的讲解
为了让读者更快地上手,本书特别设计了适合初学者的学习方式,用准确的语言总结概念、用直观的图示演示过程、用详细的注释解释代码、用形象的比方帮助记忆。
>知识点介绍 准确、清晰是其显著特点,一般放在每一节开始的位置,让零基础的读者了解相关概念,顺利入门。
>范例 书中出现的完整实例,以章节顺序编号,便于检索和循序渐进地学习、实践,放在每节知识点介绍之后。
>示例代码 与范例编号对应,层次清楚、语句简洁、注释丰富,体现了代码优美的原则,有利于读者养成良好的代码编写习惯。对于大段程序,均在每行代码前设定编号,便于学习。
>运行结果 给出范例的运行结果和对应图示,帮助读者更直观地理解示例代码。
>代码解析 将范例代码中的关键代码行逐一解释,有助于读者掌握相关概念和知识。
>贴心的提示 为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些贴心的提醒,提供建议或者解决问题的方法,让读者加深印象。
注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。
警告:对操作不当或理解偏差将会造成的灾难性后果给出警示,以加深读者印象。
>习题 每章最后提供专门的测试习题,供读者检验所学知识是否牢固掌握。
>微课 使用手机App(例如微信)扫描二维码,可在线观看配套教学微课。
在本书中,大部分的内容是基于Turbo C 2.0编译器实现的,但是为了适应最新的C99语言标准,本书部分章节是基于Visual C 编译器实现的(两者主要的差别在于内存空间不同)。使用Visual C 编译器的章节是第3~5章、第8、9章,以及第14~19章。
2.实用超值的下载资源
为了帮助读者比较直观地学习,本书配套下载资源,内容包括多媒体视频、电子教案(PPT)和实例源代码等。
? 多媒体视频
本书配有长达14小时的教学视频,讲解关键知识点界面操作和书中的一些综合练习题。作者亲自配音、演示,手把手教会读者使用。
? 电子教案(PPT)
本书可以作为高校相关课程的教材或课外辅导书,所以作者特别为本书制作了电子教案(PPT),以方便老师教学使用。
? 职场面试法宝
本书附赠“职场面试法宝”,含经典的职场面试题及解答。
3.提供完善的技术支持
本书的技术支持论坛为http://www.rzchina.net,读者可以在上面提问交流。另外,论坛上还有一些小的教程、视频动画和各种技术文章,可帮助读者提高开发水平。
本书非常适合以下人员阅读:
>从未接触过C语言的自学人员;
>有一定C语言基础,但还需要进一步学习的人员;
>其他编程爱好者。
本书作者
本书主要由刘蕾编写,参与编写工作的还有:张昆、张友、赵桂芹、张金霞、张增强、刘桂珍、陈冠军、魏春、张燕、孟春燕、顼宇峰、李杨坡、张增胜。由于水平有限,书中难免存在疏漏和不足之处,恳请广大读者和专家批评、指正。
第1章 C语言与程序概述
C语言是现在世界上应用最广泛、最受欢迎的计算机语言之一。C语言从诞生到现在已经经历了30多年的发展,并且仍在继续进步。本章将为学习C语言做一些知识铺垫和准备工作。通过本章的学习,可以了解C语言的诞生及其标准化过程,同时,可以学习到程序设计的一些基本知识。在本章的学习中需要掌握以下知识点:
?
数据结构的概念和作用;
?
算法的概念和作用;
?
结构化程序设计的方法;
?
三种基本结构;
?
程序流程图和N-S流程图。
1.1 C语言的历史沿革
C语言已经经历了几十年的发展。在学习C语言之前,应该要先了解C语
言是如何诞生的,它的历史是怎么样的。本节将介绍C语言的诞生、标准化过
程及其重要特点,最后还将展示一个标准的“Hello, world!”程序。
1.1.1 C语言的诞生
C语言是由著名的计算机科学家Dennis Ritchie创造的,其历史可以追溯到ALGOL 60。ALGOL
60,也称为A语言,是纯粹地面向描述计算过程的语言。虽然A语言并没有被广泛使用,但它引入的分程序结构、递归、动态、局部性概念等思想,对后来的程序设计语言有深远影响。1963年,英国剑桥大学在A语言的基础上设计了CPL(Combined Programming Language)语言。CPL语言比ALGOL
60更接近硬件,但由于过于复杂而难以实现。1967年,剑桥大学的Martin Richards简化了CPL,设计了BCPL(Basic
Combined Programming Language)语言。
C语言的直接前身——B语言就是从BCPL发展而来的。1969年,Dennis
Ritchie和另一名计算机科学家Ken Thompson在贝尔实验室从事DEC PDP-7计算机的研究。Ken Thompson为DEC PDP-7计算机设计了一个操作系统软件,也就是最早的UNIX操作系统。当时,在DEC PDP-7上写程序很困难,只能用很底层、很高深的汇编语言。汇编语言依赖于计算机硬件,编写的程序不具备可读性和可移植性,而且难以调试。
Ken Thompson最初设计的UNIX操作系统就是用汇编语言编写的。为了克服汇编语言编写效率低下的缺点,Ken Thompson在BCPL的基础上设计了一种高级程序语言,并把它命名为B语言。B语言是一种无类型的语言,更加便于编写系统软件,它直接对机器码操作,这一点和后来的C语言有很大不同。作为系统软件编程语言的第一个应用,Ken Thompson还使用B语言重写了其自身的解释程序。但是B语言仍然过于简单,因为它采用解释模式而非编译模式,这些设计缺陷使它在内存的限制面前一筹莫展。
在1972年至1973年间,Dennis Ritchie改进了B语言,为其添加了数据类型的概念,他将原来的解释程序改写为可以直接生成机器代码的编译程序,并将其命名为C语言。C语言既保持了BCPL语言和B语言精练、接近硬件的优点,又克服了它们过于简单、缺少数据类型等缺点。
最初的C语言只是为了描述和实现UNIX操作系统而设计的。1973年,Ken
Thompson和Dennis Ritchie在PDP-11机上用C语言重新改写了UNIX操作系统的内核,即UNIX第5版。此后,随着UNIX操作系统的日益推广,C语言的突出优势引起了人们的广泛重视,开始有人研究如何把C语言从UNIX操作系统移植到其他系统中。1977年,不依赖于具体机器的C语言编译文本——《可移植C语言编译程序》的面世,大大简化了C语言移植到其他系统的工作。C语言的易移植性也进一步推动了UNIX操作在其他机器上的实现。随着UNIX操作的广泛使用,C语言也得到了更快的发展。现在,C语言已成为用途最为广泛的计算机高级语言之一,不仅可以用于编写系统软件,还可以用于构建各个领域的应用软件。
1.1.2 C语言的发展历程
C语言发展到现在已经经历了三个标准,分别为K&R C、C89或ANSI C和C99。
1.K&R C
最初,C语言没有统一的官方标准可供遵循。1978年,Brian Kernighan和Dennis Ritchie完成了影响深远的The C Programming Language(第一版)的写作,该书的附录中提供了C语言参考手册。在以后的几年里,该书一直被广泛作为C语言的实现规范,成为非官方的C语言标准。这本书提出的C语言标准通常被简称为“K&R C”,其中,“K”和“R”是两位作者名字的首字母。
2.C89或ANSI C
C语言在随后短短几年的应用中得到了很快的发展。实际上使用的C语言早已超越了K&R C描述的范围,同时,K&R C在语言的许多细节上也没有达到足够精确的要求,这使标准化C语言成为迫切的要求。于是,在1983年夏天,美国标准化组织(ANSI)成立了一个C语言工作小组,开始了C语言的标准化工作。小组主要负责确认C语言的常用特性,但也对语言本身做了一些修改,并引入了一些新的特性。
1989年12月,ANSI发布了ANSI 89报告,由其规定的C语言标准被称为ANSI C,也称为C89。随即,该标准被国际标准化组织(ISO)略做修改后接纳为ISO标准,即ISO/IEC9899:1990。由于ISO是一个更为权威的国际性组织,于是在1990年,ANSI重新采纳了ISO/IEC9899:1990作为新的ANSI
C。因此,ANSI C实际上就是ISO C。
3.C99
在ANSI标准化后,C语言的标准在相当长的一段时间内都保持不变,直到1999年,ISO的第14小组(WG
14)在C89的基础上进行了修改,并加入了一些新的特性,发布了ISO9899:1999。这个版本就是通常提及的C99。但是各个公司对C99所表现出来的兴趣不同,一些公司最新的编译器并没有支持一些新的特性。
评论
还没有评论。