资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 数组,6.1 一维数组 6.2 二维数组 6.3 字符数组 6.4 数组程序举例,6.1 一维数组,6.1.1一维数组的定义方式 一维数组的定义方式为: 类型说明符数组名常量表达式; 其中: 类型说明符可以是任何一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式须为整型,其值表小数组元素的个数,也称为数组的长度。,返回,下一页,6.1 一维数组,对数组的定义应注意以下几点。 (1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 (2)数组名的书写规则应符合标识符的书写规定。 (3)数组名不能与其他变量名相同。 (4)不能在方括号中用变量来表示元素的个数,但是可以用符号常量来表示。 (5)允许在同一个类型说明中说明多个数组和多个变量。,返回,下一页,上一页,6.1 一维数组,6.1.2一维数组元素的引用 数组元素是组成数组的基本单元。 数组元素引用的一般形式为: 数组名下标 其中下标只能为整型常量或整型表达式,如为小数时,将被自动取整。 数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。 在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。,返回,下一页,上一页,6.1 一维数组,6.1.3一维数组的初始化 给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样可以减少运行时间,提高效率。 通常也可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数对逐个数组元素赋值。 初始化赋值的一般形式为: 类型说明符数组名常量表达式=值,值,值; 其中在中的各数据值即为各元素的初值,各值之间用逗号间隔。,返回,下一页,上一页,6.1 一维数组,C语言对数组的初始化赋值还有以下几点规定。 (1)可以只给部分元素赋初值。 (2)只能给元素逐个赋值,不能给数组整体赋值。 (3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。 6.1.4一维数组程序举例 【例6.4】用键盘输入10个整数,输出其中的最大值。 main() int i,max,a【10; printf(”input 10 numbers:n“);,返回,下一页,上一页,6.1 一维数组,for(1=0;1max) max=ai; printf(“maxnum=%dn“,max);,返回,下一页,上一页,6.1 一维数组,例6.4程序中第一个for语句逐个输入10个数到数组a中,然后把a0送入max中。在第一个for语句中,a1到a9逐个与max中的内容比较,若比max的值大,则把该下标变量送入max中,因此max在己比较过的下标变量中总是为最大者。比较结束,输出的max值即为10个整数的最大值。,返回,上一页,6.2 二维数组,6.2.1二维数组的定义 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是一维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍一维数组,多维数组可由一维数组类推而得到。 二维数组定义的一般形式是: 类型说明符数组名 常量表达式1常量表达式2; 其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。,返回,下一页,6.2 二维数组,6.2.2二维数组元素的引用 一维数组的元素也称为双下标变量,其表示的形式为: 数组名下标下标 其中下标应为整型常量或整型表达式。 数组说明和数组元素在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度;而数组元素中的下标是该元素在数组中的位置标识。 数组是一种构造类型的数据。一维数组可以看作是由一维数组嵌套而构成的。,返回,下一页,上一页,6.2 二维数组,6.2.3二维数组的初始化 一维数组初始化也是在类型说明时给各下标变量赋以初值。一维数组可按行分段赋值,也可按行连续赋值。 对于一维数组初始化赋值还有以下说明。 (1)可以只对部分元素赋初值,未赋初值的元素自动取0值。 (2)如对全部元素赋初值,则第一维的长度可以省略。,返回,下一页,上一页,6.2 二维数组,6.2.4二维数组程序举例 【例6.10】将一个一维数组行和列元素互换,存到另一个一维数组中。 程序如下: main() int a23=1,2,3,4,5,6: int b32,i,j; printf(”array a:n“);,返回,下一页,上一页,6.2 二维数组,for(1=0;1=1;1+) for(J=0;J=2;J+) printf(”%5d”,aij); bji=aji; printf(”n“) printf(”array b:n“),返回,下一页,上一页,6.2 二维数组,for(1=0;1=2,1+) for(J=0;J=1;J+) printf(”%5d”,biJ); printf(”n”); ,返回,上一页,6.3 字符数组,6.3.1字符数组的定义 形式与前面介绍的数值数组相同。 由于字符型和整型通用,也可以定义为int c10,但这时每个数组元素占2个字节的内存单元。 字符数组也可以是一维或多维数组。 6.3.2字符数组的初始化 字符数组也允许在定义时作初始化赋值。,返回,下一页,6.3 字符数组,6.3.3字符数组的引用 字符数组与普通的数组引用方法相同。 6.3.4字符串和字符串结束标志 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以0作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 0 存入数组,并以此作为该字符串是否结束的标志。有了0标志后,就不必再用字符数组的长度来判断字符串的长度了。 C语言允许用字符串的方式对数组作初始化赋值。,返回,下一页,上一页,6.3 字符数组,6.3.5字符数组的输人/输出 在采用字符串方式后,字符数组的输入/输出将变得简单方便。 除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出其每个字符。,返回,下一页,上一页,6.3 字符数组,6.3.6字符串处理函数 C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。使用函数可大大减轻编程的负担。用于输入/输出的字符串函数,在使用前应包含头文件stdio.h,使用其他字符串函数则应包含头文件”stiing.h“ 下面介绍几个最常用的字符串函数。 1.字符串输出函数puts 格式:puts(字符数组名) 功能:把字符数组中的字符串输出到显小器,即在屏慕上显小该字符串。,返回,下一页,上一页,6.3 字符数组,2.字符串输入函数gets 格式:gets(字符数组名) 功能:从标准输入设备键盘上输入一个字符串。 本函数得到一个函数值,即为该字符数组的首地址。 3.字符串连接函数strcat 格式:strcat(字符数组名1,字符数组名2) 功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的字符串结束标志0。本函数返回值是字符数组1的首地址。,返回,下一页,上一页,6.3 字符数组,4.字符串复制函数strcpy 格式:strcpy(字符数组名1,字符数组名2) 功能:把字符数组2中的字符串复制到字符数组1中,字符串结束标志0也一同复制。字符数组名2,也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。 5.字符串比较函数strcmp 格式:strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码的顺序比较两个数组中的字符串,并由函数返回值返回比较结果,共有以下几种结果。,返回,下一页,上一页,6.3 字符数组,(1)字符串1=字符串2,返回值=0 (2)字符串1字符串2,返回值0 (3)字符串1字符串2,返回值0 本函数也可用于两个字符串常量的比较,或字符数组和字符串常量的比较。 6.测字符串长度函数strlen 格式:strlen(字符数组名) 功能:测字符串的实际长度(不含字符串结束标志0)并作为函数的返回值。,返回,上一页,6.4 数组程序举例,【例6.22】在_维数组a中选出各行最大的元素组成一个一维数组b 本题的编程思路是:在数组a的每一行中寻找最大的元素,找到之后把该值赋予数组b相应的元素即可。程序如下: main() int a4=3,16,87,65,4,32,11,108,10,25,12,27: int b3,i,j,t;,返回,下一页,6.4 数组程序举例,for(1=0;1t)t=aij; bi=t; printf(”narray a:n“);,返回,下一页,上一页,6.4 数组程序举例,for(1=0;1=2;1+) for(J=0;J=3;J+) printf(”%5d”,aiJ); printf(”n“); printf(”narray b:n“); for(i=0;i=2;i+) printf(”%5d”,bi); printf(”n“);,返回,上一页,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号