书海网短评:
适读人群:本书适合没有编程基础的C语言初学者作为入门教程,也可作为大、中专院校和培训班的教材,对于C语言开发的爱好者,本书也有较大的参考价值。基础知识→核心技术→典型实例→综合练习→项目案例,轻松上手与提高。全面掌握
基础知识→核心技术→典型实例→综合练习→项目案例,轻松上手与提高。全面掌握C语言只需21天!
√细致体贴的知识点讲解;
√理论联系实际的学习模式;
√141个典型案例、1个项目案例、48个练习题、71个面试题:
√一线开发人员全程贴心讲解,轻松上手与提高。
《21天学通C语言(第5版)》是C语言的入门教程,详细介绍了C语言的基本概念和编程技术。《21天学通C语言(第5版)》分为八篇,共21章内容。第一篇为C语言入门篇,该篇介绍了C语言程序的特点及编程的准备。第二篇为C语言基础篇,该篇介绍了常量与变量、整型、字符型、浮点型,以及表达式与操作符等内容。第三篇为结构编程篇,该篇讲解了选择结构和循环结构两种常用的程序结构。第四篇为数组和字符串篇,该篇讲解了C语言中数组和字符串的应用。第五篇为函数篇,该篇内容主要包括函数、函数与文件、函数中的变量和字符串处理函数等。第六篇为指针篇,该篇介绍了指针的重要概念和应用。第七篇为高级应用篇,该篇内容主要包括堆管理、位运算操作符、结构体、共用体、枚举和位域,以及预处理等。第八篇为综合案例篇,该篇以图书管理系统开发为例,详细介绍了C语言和文件处理开发的过程。《21天学通C语言(第5版)》适合没有编程基础的C语言初学者作为入门教程,也可作为大、中专院校和培训班的教材,对于C语言开发的爱好者,《21天学通C语言(第5版)》也有较大的参考价值。《21天学通C语言(第5版)》配有下载资源,内容包括超大容量手把手教学视频、电子教案(PPT)、源代码等。
刘蕾,长期从事C、VC程序设计语言的教学工作,并使用C和VC开发了大量的程序,主要有:学校食堂IC卡管理系统;学校信息管理系统(使用VC和MSSQL2000);达州军分区点对点视频会议系统;市民政局局域网即时通信软件;健身俱乐部会员管理系统;某钻探公司图形矢量化系统。
第1篇C语言入门篇
第1章C语言与程序概述
1.1C语言的历史沿革
1.1.1C语言的诞生
1.1.2C语言的发展历程
1.1.3C语言的特点
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.1C程序简介
2.1.1简单C程序示例
2.1.2C程序的特点
2.1.3标识符与关键字
2.1.4C程序的执行步骤
2.2C程序开发环境
2.2.1TurboC
2.2.2VisualC++2017
2.2.3GCC3.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.1typedef的标准形式
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.4C语言的操作符
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.1if语句
6.1.1if语句的基本形式
6.1.2else和if的配对使用
6.1.3选择结构中的不平等分支
6.1.4条件表达式中的=与==
6.2switch语句
6.2.1switch语句的基本形式
6.2.2break语句
6.2.3elseif语句和switch语句
6.2.4switch中的标号
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.1for语句
7.1.1for语句的基本形式
7.1.2for头中的三个表达式
7.1.3for头中的逗号表达式
7.1.4for语句的嵌套
7.1.5for语句示例
7.2while语句
7.2.1while语句的基本形式
7.2.2while语句与for语句
7.2.3while语句示例
7.3do-while语句
7.3.1do-while语句的基本形式
7.3.2do-while语句与while语句
7.3.3do-while语句示例
7.4continue语句与break语句
7.4.1continue语句
7.4.2continue语句与if语句
7.4.3break语句
7.4.4使用break语句终止多层循环
7.5goto语句
7.5.1goto语句的基本形式
7.5.2使用goto语句构成循环
7.5.3注意事项
7.6循环结构与选择结构的嵌套
7.6.1if-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.4const形参
10.4函数体
10.4.1函数体的变量定义
10.4.2检查形参
10.4.3return语句
10.5main函数
10.5.1main函数的声明
10.5.2函数值类型
10.5.3带参数的main函数
10.6小结
10.7习题
第11章函数与文件
11.1多文件的程序
11.1.1文件的类型
11.1.2C工程的组织结构
11.1.3一个简单的多文件工程
11.2实现多文件工程
11.2.1TurboC下实现多文件工程
11.2.2VisualC++2017下实现多文件工程
11.2.3GCC3.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.2auto变量
12.3.3static变量
12.3.4register变量
12.3.5extern变量
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.4const指针
14.3指针与函数
14.3.1指针形参
14.3.2指针型函数
14.3.3函数型指针
14.4void型指针
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.1calloc函数
16.2.2realloc函数
16.3动态数组
16.4小结
16.5习题
第17章位运算操作符
17.1位运算概述
17.2位运算操作符语法
17.2.1取反操作符(~)
17.2.2位或操作符(|)
17.2.3位与操作符(&)
17.2.4异或操作符(^)
17.2.5右移操作符(>>)
17.2.6左移操作符(<<)
17.2.7位运算赋值操作符
17.3位运算操作符使用示例
17.3.1循环移位
17.3.2使用子网掩码
17.4小结
17.5习题
第18章结构体
18.1初识结构体
18.1.1声明结构体类型
18.1.2定义结构体变量
18.1.3结构体的存储形式
18.2结构体的应用
18.2.1访问结构体成员
18.2.2初始化结构体变量
18.2.3结构体变量的赋值
18.3结构体数组
18.3.1定义结构体数组
18.3.2初始化结构体数组
18.3.3结构体数组示例
18.4结构体指针
18.4.1指向结构体变量的指针
18.4.2指向堆空间的结构体指针
18.4.3指向结构体数组元素的指针
18.5小结
18.6习题
第19章共用体、枚举和位域
19.1共用体
19.1.1声明共用体类型
19.1.2定义共用体变量
19.2枚举
19.2.1声明枚举类型
19.2.2使用枚举变量
19.3位域
19.3.1位域的概念
19.3.2位域的字长
19.3.3位域的存储形式
19.4小结
19.5习题
第20章预处理
20.1宏定义
20.2宏对象
20.2.1定义宏对象
20.2.2替换字符串
20.2.3说明形参属性
20.2.4宏的作用域
20.2.5标准宏对象
20.3宏函数
20.3.1定义宏函数
20.3.2宏函数与函数
20.4条件编译
20.4.1#ifdef命令
20.4.2#ifndef命令
20.4.3#if命令
20.4.4defined宏函数
20.5文件包含
20.5.1#include命令
20.5.2注意事项
20.6小结
20.7习题
第8篇综合案例篇
第21章图书管理系统开发实例
21.1需求分析
21.2系统设计
21.2.1概要设计
21.2.2数据结构
21.3主程序――main模块
21.4用户界面模块
21.4.1程序流程
21.4.2代码实现
21.4.3设计主界面
21.4.4设计增加书籍菜单
21.4.5设计删除书籍菜单
21.4.6设计检索书籍菜单
21.4.7设计导入书籍菜单
21.4.8退出系统
21.5日志模块
21.5.1打开和关闭文件
21.5.2文件的格式化读写
21.5.3打开和关闭日志文件
21.5.4记录日志
21.6数据管理模块
21.6.1处理时间数据
21.6.2处理书籍数据
21.6.3增加书籍
21.6.4删除书籍
21.6.5查询书籍
21.6.6导入书籍数据
21.7小结
C语言是现在世界上应用最广泛、最受欢迎的计算机语言之一。C语言从诞生到现在已经
经历了30多年的发展,并且仍在继续进步。本章将为学习C语言做一些知识铺垫和准备工作。
通过本章的学习,可以了解C语言的诞生及其标准化过程,同时,可以学习到程序设计的一些基本知识。在本章的学习中需要掌握以下知识点:
数据结构的概念和作用;
算法的概念和作用;
结构化程序设计的方法;
三种基本结构;
程序流程图和N-S流程图。
1.1C语言的历史沿革
C语言已经经历了几十年的发展。在学习C语言之前,应该要先了解C语言是如何诞生的,它的历史是怎么样的。本节将介绍C语言的诞生、标准化过程及其重要特点,最后还将展示一个标准的“Hello,world!”程序。
1.1.1C语言的诞生
C语言是由著名的计算机科学家DennisRitchie创造的,其历史可以追溯到ALGOL60。
ALGOL60,也称为A语言,是纯粹地面向描述计算过程的语言。虽然A语言并没有被广泛使用,但它引入的分程序结构、递归、动态、局部性概念等思想,对后来的程序设计语言有深远影响。1963年,英国剑桥大学在A语言的基础上设计了CPL(CombinedProgrammingLanguage)语言。CPL语言比ALGOL60更接近硬件,但由于过于复杂而难以实现。1967年,剑桥大学的MartinRichards简化了CPL,设计了BCPL(BasicCombinedProgrammingLanguage)语言。C语言的直接前身——B语言就是从BCPL发展而来的。1969年,DennisRitchie和另一名计算机科学家KenThompson在贝尔实验室从事DECPDP-7计算机的研究。KenThompson为DECPDP-7计算机设计了一个操作系统软件,也就是最早的UNIX操作系统。当时,在DECPDP-7上写程序很困难,只能用很底层、很高深的汇编语言。汇编语言依赖于计算机硬件,编写的程序不具备可读性和可移植性,而且难以调试。
KenThompson最初设计的UNIX操作系统就是用汇编语言编写的。为了克服汇编语言编写效率低下的缺点,KenThompson在BCPL的基础上设计了一种高级程序语言,并把它命名为B语言。B语言是一种无类型的语言,更加便于编写系统软件,它直接对机器码操作,这一点和后来的C语言有很大不同。作为系统软件编程语言的第一个应用,KenThompson还使用B语言重写了其自身的解释程序。但是B语言仍然过于简单,因为它采用解释模式而非编译模式,这些设计缺陷使它在内存的限制面前一筹莫展。
在1972年至1973年间,DennisRitchie改进了B语言,为其添加了数据类型的概念,他
将原来的解释程序改写为可以直接生成机器代码的编译程序,并将其命名为C语言。C语言既保持了BCPL语言和B语言精练、接近硬件的优点,又克服了它们过于简单、缺少数据类型等缺点。
最初的C语言只是为了描述和实现UNIX操作系统而设计的。1973年,KenThompson和
DennisRitchie在PDP-11机上用C语言重新改写了UNIX操作系统的内核,即UNIX第5版。此后,随着UNIX操作系统的日益推广,C语言的突出优势引起了人们的广泛重视,开始有人研究如何把C语言从UNIX操作系统移植到其他系统中。1977年,不依赖于具体机器的C语言编译文本——《可移植C语言编译程序》的面世,大大简化了C语言移植到其他系统的工作。C语言的易移植性也进一步推动了UNIX操作在其他机器上的实现。随着UNIX操作的广泛使用,C语言也得到了更快的发展。现在,C语言已成为用途最为广泛的计算机高级语言之一,不仅可以用于编写系统软件,还可以用于构建各个领域的应用软件。
前言
“21天学编程系列”自2009年1月上市以来一直受到广大读者的青睐。该系列中的大部分图书从一上市就登上了编程类图书销售排行榜的前列,很多大、中专院校也将该系列中的一些图书作为教材使用,目前这些图书已经多次印刷、改版。可以说,“21天学编程系列”是自2009年以来,国内原创计算机编程图书最有影响力的品牌之一。
为了使该系列图书能紧跟技术和教学的发展,更加适合读者学习和学校教学,我们结合最新技术和读者的建议,对该系列图书进行了改版(即第5版)。《21天学通C语言(第5版)》便是该系列中的C语言分册。
《21天学通C语言(第5版)》有何特色
1.细致体贴的讲解
为了让读者更快地上手,《21天学通C语言(第5版)》特别设计了适合初学者的学习方式,用准确的语言总结概念、用直观的图示演示过程、用详细的注释解释代码、用形象的比方帮助记忆。
>知识点介绍准确、清晰是其显著特点,一般放在每一节开始的位置,让零基础的读者了解相关概念,顺利入门。
>范例书中出现的完整实例,以章节顺序编号,便于检索和循序渐进地学习、实践,放在每节知识点介绍之后。
>示例代码与范例编号对应,层次清楚、语句简洁、注释丰富,体现了代码优美的原则,有利于读者养成良好的代码编写习惯。对于大段程序,均在每行代码前设定编号,便于学习。
>运行结果给出范例的运行结果和对应图示,帮助读者更直观地理解示例代码。
>代码解析将范例代码中的关键代码行逐一解释,有助于读者掌握相关概念和知识。
>贴心的提示为了便于读者阅读,《21天学通C语言(第5版)》还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些贴心的提醒,提供建议或者解决问题的方法,让读者加深印象。
注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。
警告:对操作不当或理解偏差将会造成的灾难性后果给出警示,以加深读者印象。
>习题每章最后提供专门的测试习题,供读者检验所学知识是否牢固掌握。
>微课使用手机App(例如微信)扫描二维码,可在线观看配套教学微课。
在《21天学通C语言(第5版)》中,大部分的内容是基于TurboC2.0编译器实现的,但是为了适应最新的C99语言标准,《21天学通C语言(第5版)》部分章节是基于VisualC++编译器实现的(两者主要的差别在于内存空间不同)。使用VisualC++编译器的章节是第3~5章、第8、9章,以及第14~19章。
2.实用超值的下载资源
为了帮助读者比较直观地学习,《21天学通C语言(第5版)》配套下载资源,内容包括多媒体视频、电子教案(PPT)和实例源代码等。
?多媒体视频
《21天学通C语言(第5版)》配有长达14小时的教学视频,讲解关键知识点界面操作和书中的一些综合练习题。作者亲自配音、演示,手把手教会读者使用。
?电子教案(PPT)
《21天学通C语言(第5版)》可以作为高校相关课程的教材或课外辅导书,所以作者特别为《21天学通C语言(第5版)》制作了电子教案(PPT),以方便老师教学使用。
?职场面试法宝
《21天学通C语言(第5版)》附赠“职场面试法宝”,含经典的职场面试题及解答。
3.提供完善的技术支持
《21天学通C语言(第5版)》的技术支持论坛为http://www.rzchina.net,读者可以在上面提问交流。另外,论坛上还有一些小的教程、视频动画和各种技术文章,可帮助读者提高开发水平。
《21天学通C语言(第5版)》非常适合以下人员阅读:
>从未接触过C语言的自学人员;
>有一定C语言基础,但还需要进一步学习的人员;
>其他编程爱好者。
《21天学通C语言(第5版)》作者
《21天学通C语言(第5版)》主要由刘蕾编写,参与编写工作的还有:张昆、张友、赵桂芹、张金霞、张增强、刘桂珍、陈冠军、魏春、张燕、孟春燕、顼宇峰、李杨坡、张增胜。由于水平有限,书中难免存在疏漏和不足之处,恳请广大读者和专家批评、指正。









