• 1. 第7章 数 组 杨章伟 e-mail:yang505412@163.com
  • 2. 课程内容安排声明数组 引用数组 数组的赋值 字符串 数组与函数 数组应用 小结 习题
  • 3. 数组概述 数组就是由一些具有相同数据类型元素组成的集合,这些元素在内存中占用一组连续的存储单元,而数组的类型就是这些元素的数据类型。在程序设计语言中,用一个统一的名称标识这一组数据,即数组名。
  • 4. 声明数组 和普通的变量一样,数组在使用前都必须先声明。数组的声明分为一维数组和多维数组的声明,这是根据数组的分类来区分的。 一维数组的声明一般形式为: <类型名><数组名>[<下标表达式>]={<初值表>}; 多维数组是在一维数组声明方式的基础上,增加下标的维数,即增加[]的个数,声明格式中定义了n个[],就表示n维数组。一般来说,多维数组的声明格式如下所示: <类型名><数组名>[<下标表达式1>][<下标表达式2>]…[<下标表达式n>]
  • 5. 引用数组 在声明数组时用数组名表示该数组的整体,但C++语言没有提供对数组进行整体操作的运算符和运算,而针对每个数组元素进行操作时,数组元素一般是通过下标变量来区分的。 根据数组的分类,对数组的引用也可分为一维数组的引用和多维数组的引用。本节将介绍一维数组的引用。一般来说,一维数组的数组元素引用的一般形式为: <数组名>[<下标>] 其中,下标指明了数组中每个元素的序号,值为整数,用数组名加下标值就可以访问数组中对应的某个元素。 注意:下标值是从0开始的,因此对于一个具有n个元素的一维数组来说,它的下标值是0~n-1。
  • 6. 数组的赋值 数组的赋值是对数组操作的一个重要部分,其主要包括初始化数组和在应用中对数组进行赋值。对数组的赋值方法较多,此处将重点介绍几种方法。 初始化数组 :初始化的语法格式为: 类型 数组名[ 数组范围 ]={值1,值2,…,值n} 通过赋值表达式赋值 通过输入语句赋值 通过循环语句赋值
  • 7. 字符串 在现实世界中,许多值都需要使用一串字符来表示,这就是程序设计语言中所说的字符串。在许多程序设计语言中,字符串作为一种基本的数据类型。在C++中,字符串可以通过两种方式表示:传统字符串和字符数组。 字符串是C++中应用广泛的一个数据类型,例如,下面语句定义了两个字符串: char ch1[]={“Welcome”} char ch2[]={“to China”} 由于字符串的重要性,许多编程语言都提供了关于字符串处理的一些函数,C++也是如此。C++的字符串标准函数的原型在头文件string.h中
  • 8. 字符串处理函数1.strcpy()函数 strcpy()函数用于拷贝字符串,其主要功能是将源字符串拷贝到目标字符串 2.strcat()函数 strcat()函数用于连接字符串,主要功能是将字符串source接到字符串target的后面 3.strlen函数 strcat()函数用于计算字符串的实际长度 C++还提供了诸如strlwr()函数(将字符串中大写字母转换成小写)、strupr()函数(将字符串中小写字母转换成大写)、strcmp()函数(字符串大小比较)等函数
  • 9. 字符数组 从表面上看,一个字符串是一个字符数组,但在C++语言中,它们是不完全相同的。字符串是一个以空字符“\0”作为结束符的字符型数组。 注意:字符数组与字符串是不一样的。两者最显著的区别在于,字符串的长度是其中字符的数目再加1,因为其包含了结束符'\0',而字符数组的长度就是其中字符的数目。
  • 10. 数组与函数 在实际的应用中,数组经常作为函数参数,将数组中数据传送到另一个函数中。 在将数组作为函数参数进行传递时,读者需要注意如下事项: 实参数组与形参数组类型要一致。 形参数组的长度不要超过实参数组的长度。实参数组必须定义为具有确定长度的数组,而形参数组可以不定义长度,只在数组名后加一个空的方括号,同时在被调用的函数中另设一个参数用来传递元素的个数。 可以在被调用函数中采用降维处理,即用单重循环来遍历二维数组中的所有元素。此时调用函数中的数组不要用数组名表示,而要用第一个元素的地址表示。
  • 11. 数组应用 在实际的应用中,数组的使用是很频繁的。由于实际生活中,经常需要处理相同类型的一类事物,这就需要使用到数组。在程序设计中,典型的数组应用有数组元素的查找、数组的排序等。
  • 12. 【范例7-15】顺序查找的实现该范例从键盘接收一个输入,从数组a中找出与该输入相同的元素值,并将该元素所在数组的位置输出,如没有找到则给出相关提示信息 。
  • 13. 【范例7-16】折半查找的实现 折半查找又称二分法查找,与顺序查找相比较,其是一种效率较高的查找方法。需要注意的是,折半查找是有前提条件的,其要求数组中的元素是顺序排列的,即数组元素须按值升序排列或降序排列。如果没有这一前提,是不能进行折半查找的。
  • 14. 【范例7-17】冒泡排序的实现 排序也是实际程序中的一项基本应用。由于实际工作中处理的数量巨大,所以排序对算法本身的速度要求很高。 冒泡排序是一种最为常见也最原始的排序方法,其实现思想是依次两两比较待排序的数组元素;若为逆序(递增或递减)则进行交换,将待排序元素从左至右比较一遍称为一趟“冒泡”。
  • 15. 本章主要介绍了C++中非常重要的一种存储类型——数组的相关内容,主要包括数组的声明、引用和赋值。其中,数组包含一维数组和多维数组。对于多维数组,本章重点讲解了较为常用的二维数组的声明和引用数组元素等内容。此外,字符数组和字符串也是实际中应用较多的,本章也做了简要介绍。对于数组作为函数的参数,将数组与函数结合起来,本章通过一个示例具体讲解了其应用。最后对数组在实际程序中的两种应用做了讲解,主要包括利用数组进行查找和排序的实现。 小结
  • 16. 1.设有二维数组b和c,在声明的同时进行了初始化,如下所示。 int b[2][3]={{1,2,3}, {4,5,6}}; int c[2][3]={1,2,3,4,5,6} 则b[1][1]和c[1][1]的值分别为多少? 2.编写一个C++程序,通过数组接收用户输入的5个同学的成绩,计算其平均成绩。 3.编写一个C++程序,要求通过数组的形式接收用户输入的10个整数,找出其中的最大值并显示出来。 习题
  • 17. 习题4. 编写一个C++程序,从键盘上输入10个整型数字,将其中重复的数字去掉,并将剩余数字的按照从小到大的顺序输出。例如,输入10个整型数值,如:4 3 6 3 8 4 5 7 9 6