全国计算机二级C语言程序设计讲义一维数组和二维数组ppt课件_第1页
全国计算机二级C语言程序设计讲义一维数组和二维数组ppt课件_第2页
全国计算机二级C语言程序设计讲义一维数组和二维数组ppt课件_第3页
全国计算机二级C语言程序设计讲义一维数组和二维数组ppt课件_第4页
全国计算机二级C语言程序设计讲义一维数组和二维数组ppt课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第第8 8讲讲 一维数组和二维数组一维数组和二维数组一、一维数组一、一维数组 1、一维数组的定义、一维数组的定义 2、一维数组元素的援用、一维数组元素的援用 3、一维数组的初始化、一维数组的初始化二、二维数组二、二维数组 1、二维数组的定义和援用、二维数组的定义和援用 2、二维数组的初始化、二维数组的初始化数学中:数学中:a1,a2,a3,ai,anC程序中:程序中:a0,a1,a2,ai-1,an-1 数组是数目固定,类型一样的假设干变量的数组是数目固定,类型一样的假设干变量的有序集合。有序集合。 数组中的每一个数称为数组元素,数组中的数组中的每一个数称为数组元素,数组中的每一个元素都属于同

2、一个数据类型。每一个元素都属于同一个数据类型。 在内存中数组占有一段延续的存储空间。在内存中数组占有一段延续的存储空间。一、一维数组一、一维数组1、一维数组的定义、一维数组的定义定义的格式:定义的格式: 类型阐明符类型阐明符 数组名数组名整常量表达式整常量表达式,;阐明:阐明:类型阐明符:阐明该数组所属类型,即数组元类型阐明符:阐明该数组所属类型,即数组元素的类型。素的类型。数组名:即数组的称号,其命名方法同变量名。数组名:即数组的称号,其命名方法同变量名。 :下标运算符,可经过该运算符的个数反映:下标运算符,可经过该运算符的个数反映出数组的维数。出数组的维数。整常量表达式:为一整常量表达式,

3、阐明数组的整常量表达式:为一整常量表达式,阐明数组的大小。大小。特点:特点:数组元素的个数必需是确定的数组元素的个数必需是确定的数组元素的类型必需一致数组元素的类型必需一致一维数组在内存中的存放方式:一维数组在内存中的存放方式: 数组定义以后,编译系统计算机将在内数组定义以后,编译系统计算机将在内存中开辟一块延续的存储单元用于存放数组元素,存中开辟一块延续的存储单元用于存放数组元素,数组名表示存储单元的首地址,存储单元的大小数组名表示存储单元的首地址,存储单元的大小由数组的类型和数组的大小决议。由数组的类型和数组的大小决议。例如例如 int a5;inta 4 a 3 a 2 a 1 a 0

4、2字节字节2字节字节2字节字节2字节字节2字节字节援用方式:援用方式: 数组名数组名下标下标2、一维数组元素的援用、一维数组元素的援用阐明:阐明:下界下界 下标下标 上界;上界;下界下界0 0;上界整常量表达式;上界整常量表达式1 1。下标为整型表达式;下标为整型表达式;一个数组元素本质是一个变量,代表内存中一个数组元素本质是一个变量,代表内存中的一个存储单元。援用后的数组变量也称下的一个存储单元。援用后的数组变量也称下标变量。标变量。例例 #define N 20 int a5; float f1N+6;阐明:阐明:a5:a0,a1,a2,a3,a4f1N+6:f10,f12,f125留意:

5、留意: 援用援用a5,f126编译不报错,但不能得到编译不报错,但不能得到正确的运转结果。正确的运转结果。一维数组元素援用的规定:一维数组元素援用的规定:数组必需先定义后运用。数组必需先定义后运用。数组元素只能逐个被援用,不能一次援用整数组元素只能逐个被援用,不能一次援用整个数组。个数组。对数组中一切元素逐个援用时,通常可运用对数组中一切元素逐个援用时,通常可运用循环构造。循环构造。例:例:1float b12; b1=1.0; b3=7.6; b0=b1+b3; b2=b1-b3; 2int j, a10; for ( j=0; j10; j+ ) aj=j;数组的初始化:指定义数组时对数组

6、元素赋以数组的初始化:指定义数组时对数组元素赋以初值。初值。3、一维数组的初始化、一维数组的初始化格式:格式: 类型符类型符 数组名数组名表达式表达式初值表初值表;阐明:阐明:给全部元素赋初值。给全部元素赋初值。给部分元素赋初值。给部分元素赋初值。给全部元素赋初值时可不指定数组的长度。给全部元素赋初值时可不指定数组的长度。给全部元素赋初值。给全部元素赋初值。 例例 int a8= 0,1,2,3,4,5,6,7 ;给部分元素赋初值。给部分元素赋初值。 例例 int a8= 0,1,2,3,4 ;a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 01234567a 0 a 1 a

7、2 a 3 a 4 a 5 a 6 a 7 01234000给全部元素赋初值时可不指定数组的长度。给全部元素赋初值时可不指定数组的长度。 例例 int a = 0,1,2,3,4,5,6,7 ;a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 01234567例例6.1 统计全班统计全班32名同窗某门功课的平均成果,找名同窗某门功课的平均成果,找出最高分,输出。出最高分,输出。main( ) int i, sum, max, a32 ; float average; for ( i=0; i 32; i + ) scanf( %d,&ai ); / * 给数组元素赋初值给

8、数组元素赋初值 */ for ( sum=0, i=0, max=a0; i max ) max=ai; average=(float)sum/32; printf(Average=%.2f,MAX=%dn,average,max); 例例6.2 将一个数组中的值按逆序重新存放,并输出它。将一个数组中的值按逆序重新存放,并输出它。 这里数组长度为这里数组长度为N。分析:分析:N-S图如下图如下显示初始数组元素显示初始数组元素显示逆序数组元素显示逆序数组元素for(i=0;iN/2;i+)第第i个元素与第个元素与第N-i-1个元素互换个元素互换程序:程序:define N 5main( )cha

9、r aN, temp; int i; printf(“Enter array a:n); for(i=0;iN;i+) scanf(“%c,&ai); for(i=0;iN;i+) printf(“%4c, ai); for(i=0;iN/2;i+) temp=ai; ai=aN-i-1; aN-i-1=temp; printf(“n Now,array a:n); for(i=0;iN;i+) printf(“%4c, ai);例例6.3 用起泡法排序。用起泡法排序。 将恣意十个数按由小到大的方式排序。将恣意十个数按由小到大的方式排序。例:例:第第 一一 轮轮682931682931

10、628931628931628931628391628391628319628319628319268319268319268319263819263819263189263189第第 二二 轮轮231689第第 三三 轮轮289第第 四四 轮轮123689第第 五五 轮轮682931原原 数数思绪:将相邻两个数进展比较,使小数在前,大思绪:将相邻两个数进展比较,使小数在前,大数在后。数在后。分析阐明:分析阐明:1相邻两数比较:相邻两数比较: ajaj+12第一轮:第一轮:6个数,个数,j=15;循环;循环5次,找出最大数,放次,找出最大数,放在最后。在最后。3第二轮:第二轮:5个数,个数,j

11、=14;循环;循环4次,找出次大数,放次,找出次大数,放在最大数前。在最大数前。4余此类推,经过余此类推,经过5轮,将轮,将6个数排序输出。个数排序输出。所以:外循环为所以:外循环为 i=04,内循环为:,内循环为:j=05-i;即:即:for ( i=0; i5 ; i+) for (j=0; j6i; j+) if ( ajaj+1) ajaj+1 程序:程序:main( ) int a10, i, j, k; printf(请恣意输入请恣意输入10个整数:个整数:n); for ( i=0 ; i10 ; i+) scanf(%d, &ai) ; printf(n) ; for

12、( i=0; i8; i+) for ( j=0; jaj+1) k=aj;aj=aj+1;aj+1=k; printf(按由小到大的顺序输出按由小到大的顺序输出10个整数是:个整数是:n); for (i=0; i10; i+) printf(“%d,,ai); printf(b。n); 二、二维数组二、二维数组1、二维数组的定义和援用、二维数组的定义和援用二维数组的定义格式:二维数组的定义格式:类型阐明符类型阐明符 数组名数组名整常量表达式整常量表达式1整常量表整常量表达式达式2存储方式:存储方式: 在计算机中二维数组的元素按行顺序存放。在计算机中二维数组的元素按行顺序存放。留意:留意:

13、0下标下标1常量表达式常量表达式1-1; 0下标下标2常量表达式常量表达式2-1。二维数组的援用格式:二维数组的援用格式: 数组名数组名下标下标1下标下标2例:例:int m23 合法援用格式为:合法援用格式为: m00 m01 m02 m10 m11 m12 阐明:阐明:给全部元素赋初值。给全部元素赋初值。给部分元素赋初值。给部分元素赋初值。给二维数组的全部元素赋初值,可以不指定第一给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。维的长度,但第二维的长度不能省略。2、二维数组的初始化、二维数组的初始化二维数组初始化通常是按行进展的。二维数组初始化通常是按行进展的。

14、格式:格式:类型符类型符 数组名数组名表达式表达式1表达式表达式2=初值表初值表;二维数组初始化举例二维数组初始化举例:给全部元素赋初值。给全部元素赋初值。 例例 int a34=0,1,2,3,4,5,6,7,8,9,10,11; 或写成或写成: int a34=0,1,2,3,4,5,6,7,8,9,10,11;给部分元素赋初值。给部分元素赋初值。 例例 int a34=0,1,4,5,6,8,9,10,11; 或写成或写成: int b34=0,1,2,3,4,5,6 ;给二维数组的全部元素赋初值,可以不指定第一给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。

15、维的长度,但第二维的长度不能省略。 例例 int a 4=0,1,2,3,4,5,6,7,8,9,10,11; 或写成或写成: int a 4=0,1,2,3,4,5,6,7,8,9,10,11;例例6.4 矩阵的转置。矩阵的转置。分析:将矩阵分析:将矩阵Am*n行列互换后,得一新行列互换后,得一新矩阵为矩阵为Bn*m。 它们的元素对应关系为:它们的元素对应关系为:ai, j = bj, i程序:程序:main int i,j,a34,b43; for i=0;i3; i+ for ( j=0; j4 ; j+ ) scanf(%d,&aij); bji=aij; for i=0;i4

16、; i+ for ( j=0; j3 ; j+ ) printf(%7d ,bij); printf(n); 例例6.5 打印阳辉三角。要求打印打印阳辉三角。要求打印N行行杨辉三角形是杨辉三角形是a+b的的n次幂展开后各项的系数。次幂展开后各项的系数。例如:例如: a+b的的0次幂展开后各项的系数为:次幂展开后各项的系数为:1a+b的的1次幂展开后各项的系数为:次幂展开后各项的系数为:1,1a+b的的2次幂展开后各项的系数为:次幂展开后各项的系数为:1,2,1a+b的的3次幂展开后各项的系数为:次幂展开后各项的系数为:1,3,3,1a+b的的4次幂展开后各项的系数为:次幂展开后各项的系数为:1,4,6,4,1分析:杨辉三角各行的系数有如下规律分析:杨辉三角各行的系数有如下规律 1各行第一个数都是各行第一个数都是1; 2各行最后一个数为各行最后一个数为1; 3从第从第3行起,除上面指出的第一行起,除上面指出的第一个数和最后一个数外,其他各数是上一行同列和个数和最后一个数外,其他各数是上一行同列和前一列两个数之和。前一列两个数之和。11,2,11,3,3,11,4,6,4,1a32=a21+a22a44=a33+a34表示为通式即:表示为通式即:aij=ai-1j+ai-1j-1N-S图为:图为:使数

温馨提示

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

评论

0/150

提交评论