C语言程序设计  教学课件 ppt 作者 刘明才 第5章 数组

上传人:E**** 文档编号:89422802 上传时间:2019-05-25 格式:PPT 页数:46 大小:427KB
返回 下载 相关 举报
C语言程序设计  教学课件 ppt 作者 刘明才 第5章  数组_第1页
第1页 / 共46页
C语言程序设计  教学课件 ppt 作者 刘明才 第5章  数组_第2页
第2页 / 共46页
C语言程序设计  教学课件 ppt 作者 刘明才 第5章  数组_第3页
第3页 / 共46页
C语言程序设计  教学课件 ppt 作者 刘明才 第5章  数组_第4页
第4页 / 共46页
C语言程序设计  教学课件 ppt 作者 刘明才 第5章  数组_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C语言程序设计  教学课件 ppt 作者 刘明才 第5章 数组》由会员分享,可在线阅读,更多相关《C语言程序设计  教学课件 ppt 作者 刘明才 第5章 数组(46页珍藏版)》请在金锄头文库上搜索。

1、第1页 共46页,第5章 数组,一维数组 二维数组 字符数组,第2页 共46页,5.1 一维数组,一维数组的定义 一维数组的存储形式 一维数组的初始化 一维数组的引用 一维数组的应用举例,第3页 共46页,5.1.1 一维数组的定义,一维数组是数组名后只有一对方括号的数组,其定义方式为: 类型标识符 数组名元素个数; 例如:char str20;,第4页 共46页,关于数组的定义,应注意以下几点。 数组名后用方括号括住数组元素的个数,不能使用圆括号。 元素个数可以是整型常量,也可以是整型常量表达式,但绝不能含有变量,因为此表达式的值是在编译时计算出来的,而编译时系统并不能确定变量的取值。 数组

2、元素个数必须大于或等于1。 数组元素的下标是从0开始编号的。,第5页 共46页,5.1.2 一维数组的存储形式,第6页 共46页,5.1.3 一维数组的初始化,在定义数组时,为数组元素赋初值,称为数组的初始化,形式如下: 数据类型 数组名元素个数=值1,值2,值n;,第7页 共46页,其中名次说明如下。 花括号中的值是初值,用逗号分开。例如: int a5=10,20,30,40,50; 各数组元素的初值为: a0=10,a1=20,a2=30,a3=40,a4=50,第8页 共46页,如果花括号中的值的个数少于数组元素的个数,则多余的数组元素的初值为0(字符型数组元素为0)。例如: int

3、a5=10,20,30; 各数组元素的初值为: a0=10,a1=20,a2=30,a3=0,a4=0 char ch5=+,-; 各数组元素的初值为: ch0= +,ch1=-,ch2=0ch3=0,ch4=0,第9页 共46页,在数组定义中,可缺省方括号()中的元素个数,而用花括号中初值的个数来决定数组元素的个数。例如: int m =0,1,2; 相当于: int m3=0,1,2; 初值的个数不能多于数组长度。例如: int a5=1,2,3,4,5,6,6,7,8,9;是非法的。,第10页 共46页,5.1.4 一维数组的引用,其中下标可以是正整型表达式,其取值范围为0数组长度-1。

4、一个数组元素就是一个普通的变量。例如: int a10; a0=5; /*给a0赋值5*/ a1=2*a3/4; /*给a1赋值2*a0,即10*/ a6=a3%2+a6-6; /*给a6赋值a1+a0,即15*/,第11页 共46页,5.1.5 一维数组的应用举例,【例】用数组求Fibonacci数列前20项。该数列如下: 1,1,2,3,5,8,13,21, 这个数列有如下特点:第1和第2两个数均为1,其余每个数都是前面两项之和。 程序如下: #include void main() int i; long f40=1,1; for(i=2;i40;i+) fi=fi-2+fi-1; fo

5、r(i=0;i40;i+) if(i%5=0) printf(“n“); /*每行输出5个数*/ printf(“%10ld“,fi); /*长整型数据的输出要用附加格式符“l“*/ ,第12页 共46页,程序说明:为了能处理较大的整数,将数组定义成long型。注意,长整型数据的输入和输出要用到附加格式符“l”。,第13页 共46页,5.2 二维数组,二维数组的定义 二维数组的存储形式 二维数组的初始化 二维数组的引用 二维数组的应用举例,第14页 共46页,5.2.1 二维数组的定义,二维数组(two-dimensional array)定义的一般形式如下: 类型标识符 数组名常量表达式常量

6、表达式; 其中,类型标识符标识数组元素的类型;数组名为C语言的合法的标识符;常量表达式应为正整型常量,第一个常量表达式表示数组的行数,第二个常量表达式表示每一行的元素个数,例如: float a34; 定义a为3行4列的数组,共有12个元素,即: a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 这12个数组元素的类型均为float型。,第15页 共46页,5.2.2 二维数组的存储形式,二维数组存储示意图,第16页 共46页,5.2.3 二维数组的初始化,按行给数组赋初值。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,1

7、2; 可以将所有数据写在一个花括号内,即按数组在内存中的存储顺序赋初值。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 效果与前面的相同。但第1种方法可读性好。,第17页 共46页,可以对部分元素赋初值。 若有int a34=1,5,9;则赋初值后数组各元素为:,第18页 共46页,若有int a34=1,0,6,0,0,11;则赋初值后数组各元素为:,第19页 共46页,若有int a34=1,5,6;则赋初值后数组各元素为:,第20页 共46页,若有int a34=1,9;则赋初值后数组各元素为:,第21页 共46页,5.2.4 二维数组的引用,与一维数组相

8、似,二维数组也是由一组相同类型元素组成的,每个元素是一个变量,对这些变量的引用和操作与一维数组相似。二维数组元素的引用方式为: 数组名下标1下标2; 其中,下标1和下标2是值大于或等于0的整型表达式,这些表达式中可包含变量。例如,对数组: int n1015; 以下的引用方式都是合法的: n01、nk+10、n2*k+3j+3,第22页 共46页,5.2.5 二维数组的应用举例,【例】输入一个44的整数矩阵,分别求两对角线上元素之和。 程序如下: #define N 4 /*定义符号常量N为4*/ #include void main() int mNN; /*定义44数组*/ int i,j

9、,r1=0,r2=0; for(i=0;iN;i+) /*逐行输入数据*/ printf(“one line:“); for(j=0;jN;j+) /*逐列输入数据*/ scanf(“%d“, ,第23页 共46页,运行情况如下: one line: 1 1 1 1 one line: 2 2 2 2 one line: 3 3 3 3 one line: 4 4 4 0 the result: 6,10,第24页 共46页,5.3 字符数组,字符数组的定义 字符数组的初始化 字符数组的输入/输出 常用字符串处理函数 二维字符数组 字符串应用举例,第25页 共46页,5.3.1 字符数组的定义

10、,字符型数组是数据类型为char的数组。因此,在前面两节中介绍的数组定义、存储形式和引用等也都适用于字符型数组。 字符型数组用于存放字符或字符串,每一个数组元素存放一个字符,它在内存中占用一个字节。例如: char a10; a0=C; a1= H; a2= I; a3= N; a4= A;a5= 0; 则数组a的内存形式如图所示。未初始化或未赋值的数组元素,其值是不确定的。,第26页 共46页,字符数组存储示意图,第27页 共46页,5.3.2 字符数组的初始化,用字符常量初始化数组。例如: char a10=C,H,I,N,A,0 用字符串常量初始化数组。例如: char a6=“CHIN

11、A“;或char a6=“CHINA“;,第28页 共46页,5.3.3 字符数组的输入/输出,逐个字符的输入/输出 可用字符输入函数getchar、字符输出函数putchar、格式化输入/输出函数scanf/printf的格式符“%c”来实现逐个字符的输入和输出。,第29页 共46页,【例】输入一行字符,将其中的小写字母转换成大写字母,其余字符不变。 程序如下: #include void main() char c81; int i; for(i=0;(ci=getchar()!=n;i+); /*输入字符串,遇回车键结束*/ ci=0; /*输入字符串结束标志0*/ for(i=0;ci

12、!=0;i+) if(ci=a ,第30页 共46页,程序运行情况如下: abc,DEF! ABC,DEF!,第31页 共46页,整个字符串的输入/输出 在scanf函数和printf函数中用格式符“%s”输入/输出字符串,对应的参数应该是数组名即数组的首地址,不能是数组元素。,第32页 共46页,#include void main() char c81;int i; scanf(“%s“,c); for(i=0;ci!=0;i+) if(ci=a 运行情况如下: abc DEF! ABC,第33页 共46页,5.3.4 常用字符串处理函数,字符串输出函数puts 函数原型:int puts

13、(char *str); 使用方法:puts(str); 其中,参数str为字符串中某个字符的地址。 函数功能:输出内存中从地址str开始的若干个字符,直到遇到0为止,并将0转换成n,即输完字符串后换行。例如: char str =“ BeijingnChina“; puts(chr); 输出结果为: Beijing China,第34页 共46页,字符串输入函数gets 函数原型:char *gets(char *str); 使用方法:gets(str); 其中,参数str为字符数组中某个元素的地址。 函数功能:读入一串以回车结束的字符,顺序存入到以str为首地址的内存单元中,最后写入字符串

14、结束标志0。例如: gets(str); 从键盘输入: Computer Science 将输入的字符串“Computer Science”传给字符数组str。 gets函数和puts函数的头文件为stdio.h。,第35页 共46页,字符串连接函数strcat 函数原型:char *strcat(char *str1,char *str2); 使用方法:strcat(str1,str2); 其中,参数str1、str2为字符串中某个字符的地址。 函数功能:从地址str2起到0止的若干字符(包括0),复制到字符串str1后。str1一般为字符数组且必须定义得足够大,使其能存放连接后的字符串,返

15、回值为str1。例如: char str115=“Beijing “; /*注意:字符串的最后字符为空格*/ char str2 =“China“; printf(“%s“,strcat(str1,str2); 输出结果为: Beijing China,第36页 共46页,执行“strcat(str1,str2)”前后str1中各元素的值,第37页 共46页,字符串复制函数strcpy 函数原型:char *strcpy(char *str1,char *str2); 使用方法:strcpy(str1,str2); 其中,参数str1、str2为字符串中某个字符的地址。 函数功能:从地址str2起到

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号