描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302500834丛书名: 21世纪高等学校计算机教育实用规划教材
本书第1版于2015年2月出版发行,根据读者的反馈意见和建议,作者对本书进行了修订,对部分章节的内容进行了调整,使本书更加完善,便于读者学习使用。书中所有实例的程序均已调试通过。
本书可作为高等院校理工类专业“C语言程序设计”课程的教学用书,也可作为计算机二级考试的培训或自学教材。为配合教学,本书配有PPT教学课件、习题参考答案,并配有辅助教材《C语言程序设计学习指导(第2版)》,供读者参考。
目录
第1章C语言概述
1.1C语言程序结构
1.1.1简单的C语言程序
1.1.2C语言程序结构
1.1.3C语言程序的书写风格
1.2C语言的发展及特点
1.2.1C语言的发展
1.2.2C语言的特点
1.3C语言程序的运行过程
本章小结
习题1
第2章程序与算法
2.1程序与算法概述
2.1.1算法的概念
2.1.2算法的组成要素
2.1.3算法的特性
2.2算法的描述
2.2.1自然语言表示法
2.2.2传统流程图表示法
2.2.3NS结构化流程图表示法
2.2.4伪代码表示法
2.3结构化程序设计
2.3.1结构化程序设计的特点与方法
2.3.2结构化程序的基本结构
2.3.3结构化程序设计的过程
2.3.4程序设计的原则
本章小结
习题2
第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.4运算符与表达式
3.4.1算术运算符与算术表达式
3.4.2赋值运算符与赋值表达式
3.4.3关系运算符与关系表达式
3.4.4逻辑运算符与逻辑表达式
3.4.5条件运算符与条件表达式
3.4.6逗号运算符与逗号表达式
3.4.7其他运算符与表达式
3.5数据类型转换
3.5.1赋值类型转换
3.5.2自动类型转换
3.5.3强制类型转换
3.6常用的输入输出函数
3.6.1标准输入输出函数
3.6.2字符输入输出函数
3.7语句类型
3.7.1说明性语句
3.7.2表达式语句
3.7.3控制语句
3.7.4复合语句
3.7.5空语句
3.7.6函数调用语句
3.8应用实例
本章小结
习题3
第4章程序控制结构
4.1概述
4.2顺序结构
4.3选择结构
4.3.1if语句
4.3.2switch语句
4.3.3选择结构的嵌套
4.4循环结构
4.4.1while语句
4.4.2do…while语句
4.4.3for语句
4.4.4循环的嵌套
4.5break和continue语句
4.5.1break语句
4.5.2continue语句
4.6程序举例
4.7综合
本章小结
习题4
第5章数组
5.1数组概述
5.2一维数组
5.2.1一维数组的定义
5.2.2一维数组的引用
5.2.3一维数组的初始化
5.2.4一维数组程序举例
5.3二维数组
5.3.1二维数组的定义
5.3.2二维数组的引用
5.3.3二维数组的初始化
5.3.4二维数组程序举例
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
第6章函数
6.1函数概述
6.2函数的定义
6.2.1有返回值函数的定义
6.2.2无返回值函数的定义
6.3函数的调用
6.3.1函数调用的形式
6.3.2函数的参数
6.3.3被调函数的原型声明
6.4函数的嵌套调用和递归调用
6.4.1函数的嵌套调用
6.4.2函数的递归调用
6.5变量的作用域与生存期
6.5.1局部变量和全局变量
6.5.2变量的生存期
6.5.3存储类别小结
6.6指针与函数
6.6.1指针变量作为函数参数
6.6.2数组作为函数参数
6.7返回指针的函数和函数指针
6.7.1返回指针的函数
6.7.2函数指针
6.8main函数的参数
6.9编译预处理
6.9.1宏定义
6.9.2文件包含
6.9.3条件编译
6.10函数应用实例
本章小结
习题6
第7章结构体与共用体
7.1结构体类型与结构体变量定义
7.1.1引例
7.1.2结构体类型的定义
7.1.3结构体变量的定义
7.2结构体变量的初始化与引用
7.2.1结构体变量的初始化
7.2.2结构体变量的引用
7.3结构体数组
7.3.1结构体数组的定义
7.3.2结构体数组的初始化
7.3.3结构体数组的使用
7.4结构体指针变量
7.4.1指向结构体变量的指针
7.4.2指向结构体数组的指针
7.5结构体与函数
7.5.1结构体变量的成员作函数参数
7.5.2结构体变量作函数参数
7.5.3指向结构体变量的指针作函数参数
7.6链表
7.6.1静态链表
7.6.2动态内存函数
7.6.3链表的基本操作
7.7共用体
7.7.1共用体的概念
7.7.2共用体变量的引用
7.7.3共用体类型数据的说明
7.8枚举类型
7.9用户自定义类型
本章小结
习题7
第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.3.4数据块读写函数
8.4文件的其他操作
8.4.1文件的定位
8.4.2文件的检测
8.5文件应用实例
本章小结
习题8
第9章位运算
9.1计算机中的数据表示
9.2位运算符
9.3位段
9.4位运算程序举例
本章小结
习题9
第10章综合实例
10.1应用程序的开发流程
10.2综合应用程序实例
本章小结
附录A运算符的优先级与结合性
附录BC语言中的关键字
附录C常用字符的ASCII码
附录DC语言常用库函数
参考文献
前言
C语言既是目前应用最为广泛的高级程序设计语言之一,也是非常优秀的程序设计入门语言。读者一旦掌握了C语言,再学习其他程序设计语言就轻而易举了。本书的主要特点如下:
(1) 主要章节的内容采用任务驱动的方式,通过一个实例引入基本概念和基本方法,内容叙述自然,顺理成章。
(2) 将指针及其相关内容分布于各章,而不单独设置一章。从指针的概念引入到指针变量的使用,讲解由浅入深、层层推进,便于读者理解和掌握。
(3) 以综合实例为主线,贯穿各主要章节始终。使读者在应用中加深对C语言基本语法和程序设计方法的理解,不断提高分析问题、解决问题的能力。
全书共分为10章内容: 第1章介绍C程序的结构及其特点; 第2章介绍算法及其结构化程序设计; 第3章是数据类型和表达式,介绍C语言常用的数据类型及运算符号; 第4章是程序控制结构,即顺序结构、选择结构和循环结构及其应用; 第5章是数组及其应用,主要介绍一维数组、二维数组和字符数组的定义、初始化及其应用,并对指针变量访问数组元素进行了详细讲解; 第6章是函数及其应用,介绍了函数的定义和调用、变量的作用域与生存期、编译预处理命令等,对函数参数及其数据传递进行了重点叙述; 第7章介绍了结构体、共用体和枚举类型的定义和引用,并举例说明了单链表的操作; 第8章是文件的应用,介绍了文件的打开、关闭与读写操作; 第9章介绍了位运算操作; 第10章是综合实例,系统地介绍了利用C语言进行完整的应用程序设计及其实现的过程。
本书第1版于2015年2月出版发行,并获得广大读者的认可。在受到肯定的同时,也收到较多读者对本书的使用体会和建议。根据读者的反馈意见和建议,作者对本书进行了修订,对部分章节的内容作了适当调整,前期版本中出现的个别文字或符号错误也已进行修正。在此,向给予帮助的读者表示感谢,也希望大家依然支持修订版,并提出批评和指正建议,使之更加完善。
《C语言程序设计案例教程(第2版)》具有通俗易懂、分析透彻、开拓思路的特点,有利于读者自主学习。教材中所有实例的程序均在Microsoft Visual C 6.0集成环境中调试通过。本教材推荐使用时间为一学期(64学时或80学时,含实验32学时)。通过循序渐进的系统学习,使读者能较好地掌握C语言程序设计方法和技巧,为后续的学习打下扎实的基础。
程序设计课程是一门实践性较强的课程,实践环节特别重要。为了更好地帮助读者学习C语言,作者还编写了《C语言程序设计学习指导(第2版)》,提供上机实验项目、C程序典型题解和C程序设计习题集,为课堂教学、实验教学和读者自学提供全方位的支持。
本书的作者均是多年从事C语言程序设计教学、具有丰富实践教学经验的高校教师。本书融入了作者多年的教学与实践经验,希望能对广大读者有所帮助。
全书由张丽华主编并统稿,参加编写的人员还有刘小军、梁田、宋柱芹、殷联甫、张彬,在此表示感谢。
对支持本书出版的清华大学出版社表示感谢!
由于编者水平有限,不足与疏漏之处在所难免,敬请读者及同仁不吝赐教。
编者
2018年1月
数组
主要知识点:
◆数组的概念
◆一维数组
◆二维数组
◆字符数组
◆字符串处理
◆内存空间访问方式
◆指针的概念
◆数组与指针
前面章节中介绍了基本的数据类型,如整型、浮点型及字符型等。使用这些类型的变量来处理数据,已经可以解决一些简单的问题。但在实际应用中,需要处理的数据往往是批量数据(如100个学生成绩),这些批量数据不只数据量较大,而且数据之间还可能存在着某种关系(如两门课程的成绩是属于同一个学生的),此时,使用数组则显得更加方便有效。
本章主要介绍在C语言中怎样使用数组来处理批量数据。
5.1数 组 概 述
与整型等简单数据类型相似,数组也可以理解为一种用来定义变量的数据类型,只是用数组定义的变量,更方便于存放批量数据。
【实例51】输入5个学生的课程成绩,计算并输出最高分。
通过前面的学习,我们可以提出以下思路:
思路一: 定义变量x和max,先输入第1个成绩给x,并将其赋值给max,即认为只有一个数时最大值就是这个数。再构造一个执行循环体4次的循环结构,依次输入并判断第2到第5个数(后4个数)。具体在循环体中完成以下操作: 输入一个成绩给x,并执行if(max
/*实例5-1*/
#include
int main()
{
int x, max, i;
scanf( “%d”, &x );
max = x;
for( i=1; i<5; i )
{
scanf( “%d”, &x );
if( max < x )
max = x;
}
printf( “The max score is %d\n”, max );
return 0;
}
可知,在前面的章节中,思路一描述了类似问题的常见解决方式。但若问题稍加复杂化,在前面的基础上继续输出所有低于该最高分的学生成绩呢?通过分析可以发现要完成这个任务,首先需要将所有的学生成绩保存起来,而思路一中的变量x只能保存一个学生成绩,那么有没有更好的解决方法呢?
C语言程序设计中,在处理类似的数据量较大的问题时,使用数组将是一种常见的方法。那么什么是数组呢?
(1) 数组可以理解为由相同类型的数据组成的数据集合。数组中的每一个数据称为数组的元素,不同的数组有不同的名称,也有不同的元素个数。如5个学生的成绩就是一个数组,在C语言中可以用int a[5];来定义,其中int表示数组中元素的数据类型为整型,a表示数组的名称,5表示数组a中的元素个数。
(2) 数组中的元素是有顺序的。为了方便,在定义了数组以后,每一个元素都分配到一个顺序号(从零开始计数),称为这个元素在该数组中的下标。如我们用int a[5];定义了一个含有5个元素的数组a,那到底是哪5个呢?它们依次为a[0],a[1],a[2],a[3]和a[4],可以看出第1个元素的下标为0。
有了数组的概念后,让我们再回到实例51,通过分析可得以下思路:
思路二: 定义一个包含5个元素的数组a和简单变量max。依次输入第1个成绩给a[0],输入第2个成绩给a[1],…,一直到输入第5个成绩给a[4]。先将第1个成绩a[0]赋值给max,即认为只有一个成绩a[0]时最大值就是a[0]。再构造一个执行循环体4次的循环结构,使用if(max
/*实例5-1*/
#include
int main()
{
int i, a[5]; /*定义了5个元素的数组a表示5个学生成绩*/
int max; /*max用来表示最高成绩*/
for( i=0; i<5; i )
scanf( “%d”, &a[i] );
max=a[0];
for( i=1; i<5; i )
{
if(max
max = a[i];
}
printf( “The max score is %d\n”, max );
return 0;
}
在上述程序的第一个循环中,i的值从0取到4时,a[i]也从a[0]变到a[4]。若还想在此基础上继续输出所有低于最高成绩的学生成绩,只需在原程序的printf语句后添加以下程序段即可:
for( i=0; i<5; i )
if( a[i] < max )
printf( “%d\n”, a[i] );
可见,将数组与循环相结合,可以方便、有效地处理批量数据,大大提高了工作效率。
5.2一 维 数 组
一维数组是一种最简单的数组,它的数组元素只需要用数组名加一个下标就能确定,如前面介绍的学生成绩数组就是一维数组。
5.2.1一维数组的定义
与其他简单变量相同,要使用数组,就必须先在程序中定义它。又因为数组是一个有顺序的同种类型数据的集合,那么在定义数组时就需要已知或指定该数组的名称、数组中的元素个数以及这些元素的类型。如下面的数组定义:
float b[10];
表示定义了一个单精度浮点型数组,数组名称为b,数组中有10个浮点型元素。
定义一维数组的一般形式为:
类型说明符 数组名[常量表达式];
说明
(1) 类型说明符统一说明数组中各个元素的类型。
(2) 数组名的命名规则和一般变量名的命名规则相同。
(3) 数组名后必须是一对方括号[],不能是其他括号,而且方括号中为常量表达式,表示数组的元素个数,即数组的长度,不能包含变量,例如,我们可以这样定义:
#define N 5
int a[N];
但下面的数组定义是错误的:
int n=5;
int a[n];
因为在第一种定义方式中使用的N是一个常量(符号常量),而第二种定义方式中使用的n则是一个整型的变量。在Visual C 6.0环境中编译时,也会出现相应的错误提示信息。
(4) 通过int a[5] ;语句定义的一维数组a包含5个数组元素,依次为a[0],a[1],a[2],a[3]和a[4],注意下标是从0开始的
评论
还没有评论。