第5章数组和字符串(c语言).ppt_第1页
第5章数组和字符串(c语言).ppt_第2页
第5章数组和字符串(c语言).ppt_第3页
第5章数组和字符串(c语言).ppt_第4页
第5章数组和字符串(c语言).ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 数组和字符串,5,内容提要,本章主要介绍数组的定义和初始化方法,数组的基本操作,以及数组应用的一些基本算法。 在程序设计中,数组是一种非常有用的数据结构。使用数组可以有效地组织循环,从而使算法和编程大为简化。有的问题甚至不用数组就难以解决。,数组的定义和初始化,数组是相同类型变量的集合。例如,整型数组a10包含10个整型变量,每个变量称为一个数组元素。 其中,第1个数组元素记为a0,第2个数组元素记为a1,第10个数组元素记为a9,放在方括号里的“0”、“1”等称为下标。由于数组中的各元素共用同一个数组名,由不同的下标指明它在数组中的具体顺序和位置,因此人们也称数组元素为下标变量或矢量

2、。,数组的定义,同简单变量一样,数组也要先定义后使用。定义数组主要是定义以下内容。 (1)数组名。它是数组中所有元素共有的名称,取名规则与标识符相同。 (2)数据类型和存储类型。它代表数组中每个元素的类型。 (3)数组大小。它包括维数及每维中可容纳的元素个数。维的概念类似于几何空间的概念,就像表示一维空间中的点要用一个坐标,二维空间的点要用两个坐标一样,一维数组的元素有1个下标,二维数组的元素有两个下标。 定义数组的一般形式如下: 存储类型 数据类型 Nameexpnexpn-1exp1,1. 一维数组,定义一维数组时,数组说明符中只用1个维界表达式 例如,double data8;定义了一个

3、名为data的double型的一维数组,含8个元素。,二维数组及多维数组,定义二维数组时,数组说明符中要用2个维界表达式,定义n维数组时,要用n个维界表达式。 例如,float d23;定义了一个名为d的float型的二维数组,包含23=6个元素。,字符型数组,第2章介绍过字符型常量和字符型变量,也介绍字符串常量。 但是,C语言不提供字符串变量,字符串的存放和处理都要借助于字符型数组来进行。通常用一维字符型数组存放1个字符串,用二维字符型数组存放若干字符串。 例如,定义char str110; char str2211;后,一维数组str1可存放1个字符串,该字符串最多不超过9个字符(字符串中

4、包含的字符个数称为字符串的长度);二维数组str2可存放2个字符串,每个字符串的长度都不超过11。,数组的初始化,和变量一样,数组也可以进行初始化,即在定义数组的同时,给各个数组元素赋以初值 一维数组的初始化 二维数组的初始化 有关数值数组初始化的几点说明,通过初始化定义隐含尺寸数组,所谓隐含尺寸数组,指的是在定义数组时并没有指定数组的大小,而是用初始化中初值的个数来隐含规定数组的大小。 一维隐含尺寸数组的定义 二维隐含尺寸数组的定义 字符型隐含尺寸数组的定义,数组的基本操作,数组的基本操作包括数组元素的引用、数组的赋值、数组的输入/输出等。 在C语言中,数组名是该数组所占的存储空间的首地址,

5、是一个常量,不允许对它实施赋值、输入或进行整体引用。 数组元素则是变量,能够施加在变量上的任何操作,都可以施加在数组元素上。因此,对数组的操作主要是对数组元素的操作。,数值数组的应用,1. 数据统计 2. 排序 3. 数据检索,字符串处理函数和字符串的应用,字符串处理函数 C语言本身不提供字符串处理的功能,但是,C语言编译系统提供了大量的字符串处理库函数,它们定义在标题文件string.h中,使用时只要包含这个标题文件,就可以使用其中的字符串处理函数 (1)求字符串长度函数strlen() (2)字符串拷贝函数strcpy() (3)字符串比较函数strcmp() (4)字符串连接函数strc

6、at(),本章总结,本章重点是数组的定义和初始化方法,数组的基本操作(包括数组元素的引用、赋值、输入和输出),字符串处理函数的使用,数组的基本应用,这些应用算法会经常遇到,读者应逐渐熟悉和掌握。 本章的难点在于数组名和数组元素的关系、数组的逻辑结构和存储结构的关系、数值数组和字符数组的异同,以及数组在统计(如求最大值、最小值、标准差、矩阵运算)、排序(选择排序、冒泡排序、归并排序)、数据检索(顺序检索、二分检索)、文字处理(字符串的检索、排序和复制,字符的替换、插入和删除等)中的应用实例。,本章习题,一、选择题 1. 假设int型变量占两个字节的存储单元,若有定义:int x10=0,2,4;

7、则数组x 在内存中所占字节数为_。 A. 3 B. 6 C. 10 D. 20 2. 下列一维数组的定义中,错误的是_。 A. int a4; B. int a4=1, 2, 3, 4, 5; C. int a4=1, 2, 3; D. int a4=1; 3. 在C语言中,引用数组元素时,下标的数据类型允许是_。 A. 只能是整型常数 B. 实型常数或表达式 C. 整型常数或表达式 D. 任何类型的表达式,本章习题,4. 下面的程序运行后,输出结果是_。 main() int i,a10; for (i=9;i=0;i-) ai=10-i; printf(%d%d%d,a2,a5,a8);

8、A. 258 B. 741 C. 852 D. 369 5. 以下程序的输出结果是_。 main() int a44=1,3,5,2,4,6,3,5,7; printf(%d%d%d%dn,a03,a12,a21,a30); A. 0650 B. 1470 C. 5430 D. 输出值不确定,本章习题,6. 下列程序运行后,输出结果是_。 #define M 2 main() int a5=0,i; for (i=0;iM;i+) ai=ai+1; printf(%dn,aM); A. 不确定的值 B. 2 C. 1 D. 0 7. 下面的程序运行后,输出结果是_。 main() int a3

9、3=1,2,3,4,5,6,i,j,s=0; for (i=1;i3;i+) for (j=0;j=i;j+) s+=aij; printf(%dn,s); A. 18 B. 19 C. 20 D. 21,本章习题,8. 数组定义为int a32=1, 2, 3, 4, 5, 6,值为6的数组元素是_。 A. a32 B. a21 C. a12 D. a23 9. 若定义:int a4=1,2,3,4,5,6,7,8,9; 则数组a的第一维的大小是_。 A. 2 B. 3 C. 4 D. 不确定 10. 设有数组定义:char array=“China”;,则数组array所占的空间为_。 A

10、. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节 11. 若已定义:char c5=a,b,0,c,0; 则printf(%s, c);的输出是_。 A. a b B. ab C. abc D. ab0c 12. 设已定义char s=abcdEnglandn;,则字符串s所占的字节数是_。 A. 19 B. 18 C. 15 D. 14,本章习题,二、填空题 1. 若定义int a10=1,2,3; 则a3的值是_。 2. 在C语言中,二维数组元素在内存中的存放顺序是_。 3. 若定义char string=This is a book!,则该数组的长度是_。 4. 若定义int

11、 a23=2,3; 则值为3的数组元素是_。 5. 若定义char a15=windows-9x; 则执行语句printf(%s,a+8);后的输出结果是_。,本章习题,三、编程题 1. 编程计算矩阵a55主对角线元素之和s1、次对角线元素之和s2和周边元素之和s3。 2. 编制程序将两个有序(假设增序)数组a和b归并成一个有序数组c。例如:a=1,3,5,b=2,4,6,则归并后的c=1,2,3,4,5,6。归并排序算法如下: (1)先取数组a,b的第一个元素进行比较,将其中较小的元素放入数组c; (2)取较小元素所在数组的下一个元素与上次比较中的较大元素进行比较,将较小元素放入数组c;重复上述

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论