资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八讲 数据的基本操作,二维数组,2,7.2 二维数组,表示一个数组元素需要两个下标的数组叫作二维数组。如:每个班的学生坐在教室中,需要指定一个行号同时还需要指定一个列号,才可以确定某个学生。,3,1.二维数组的定义,格式: 类型标识符 数组名常量表达式1常量表达式2;,int a 7 12 ;,定义a为二维数组,可独立存放 7*12=84个整型数据,系统要为数组a分配2*84=168个字节的存储单元,这些存储单元是连续的,且按行排列。,4,2.二维数组元素的引用,下标可以为常量、变量、表达式,如有定义: int a 34,m=3,n=2;,a 00=10 ;,a 01=20 ;,a0n=a00+a01 ;,a0m=a0m-n*a0m-3 ;,anm=a00-a01 ;,常量作下标,变量作下标,表达式作下标,-10,第0行,第2行,格式: 数组名下标1 下标2,10,20,30,200,第1行,5,3.二维数组的初始化1,格式1:类型说明符 数组名 常量1常量2 = 数据表列 ;,例如:int a34 = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10,11,12 ;,将花括号中的常量依次赋给各个数组元素,即数组元素a00,a01,a22,a23的值分别为 1,2, 11,12。,6,3.二维数组的初始化1,例如:int a 4 = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10, 11, 12 ;,注意: int a ; 是绝对不允许的,注意: int a 3 =1,2,3,4,5,6; 是绝对不允许的,例如:int a34 = 2 , 3 ;,a00的值为2,a01的值为3,其它各数组元素的值均为0。,7,3.二维数组的初始化2,格式2:类型说明符 数组名 常量1常量2 = 数据表列1 , 数据表列2 , 数据表列n ;,例如:int a34 = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10,11,12 ;,将第一个花括号中的常量依次赋给第一行的各个元素,将第二个花括号中的常量依次赋给第二行的各个元素,即数组元素a00、a01、 a02、 、a22、a23的值分别为 1、2、 11、12。,8,3.二维数组的初始化2,例如:int a34 = 1 , 2 , 3 , 4 , 5 , 6 ;,a00、a01的值分别为1、2 ;a10、a11的值分别为 3、4;a20、a21的值分别为5、6 ;其它元素的值为0。,例如:int a 4 = 1 , 2 , 3 , 4 , 5 , 6 ;,9,4.二维数组元素的遍历,int i,j,a34; for(i=0;i3;i+)for(j=0;j4;j+)aij;,10,问题,输出二维数组中的全部元素 矩阵所有元素求和 求二维数组最大元素 求二维数组最大元素及其下标 矩阵转置,11,main( ) int a34=1,3,5,7,9,11,13,15,17,19,21,23;int i , j ;for( i=0 ; i3 ; i+ ) for( j=0 ; j4 ; j+ )printf(“%4d“,a i j );printf(“n“); ,例 输出二维数组中的全部元素,12,例3 矩阵所有元素求和,main( ) int i,j,a34=1,2,3, 4,5,6,7,8,9,10,11,12;int sum=0;for( i=0 ; i3 ; i+ ) for( j=0 ; j4 ; j+ )sum+=a i j ;for( i=0 ; i3 ; i+ ) for( j=0 ; j4 ; j+ )printf( “%d “, a i j );printf(“n“); printf(“sum=%dn“,sum); ,13,例1 求二维数组最大元素及其下标(流程图),定义数组a并赋值,N,N,Y,Y,Y,N,i+,内循环,j=0,j+,a00 max, 0 colum,0 row,i=0,i3,输出max,row,colum,结束,j4,maxaij,记下最大值及下标,14,例1 求二维数组中最大元素及其下标(程序),main ( ) int a34= 1,2,3,4 , 9,8,7,6 , -10,10,-5,2 , i , j ;int max , row , cloum ;,max= a 0 0 ; row=0 ; colum=0 ;,/* 假定a 0 0 为最大值 */,for( i=0; i3 ;i+ )for( j=0; j4; j+ )if (maxa i j ) max = a i j ; row = i ; colum=j; ,/* 记下a 0 0 的行和列下标 */,printf( “max=%d,row=%d,colum=%dn“,max, i , j );,/*max(最大值), row(行下标)和colun(列下标) */,row,colum,例7.5(P129),15,例2 矩阵转置,所谓矩阵的转置就是将矩阵的行和列互换。例如:23矩阵a:,转置后为一个32的矩阵:,1 4 2 5 3 6,1 2 34 5 6,a i j 的值与b j i 相同。,例7.4(P128),16,矩阵转置(程序),main( ) int i , j , a 2 3 = 1,2,3 , 4,5,6 , b 3 2 ;for( i=0 ; i2 ; i+ ) for( j=0 ; j3 ; j+ ) b j i =a i j ;printf(“%d “, a i j ) ;printf(“ n “ );for( i=0 ; i3 ; i+ ) for( j=0 ; j2 ; j+ )printf(“ %d “, b i j );printf(“n“); ,17,例4 求方阵主对角线元素之和1,main( ) int i,j,a44=1,2,3, 4,5,6,7,8,9,10,11,12,13,14,15,16;int sum=0;for( i=0 ; i4 ; i+ ) for( j=0 ; j4 ; j+ )sum+=a i j ; printf(“sum=%dn“,sum); ,* * * * * * * * * * * * * * * *,if( i=j ),18,求方阵主对角线元素之和2,main( ) int i,j,a44=1,2,3, 4,5,6,7,8,9,10,11,12,13,14,15,16;int sum=0;for( i=0 ; i4 ; i+ ) sum+= ;printf(“sum=%dn“,sum); ,* * * * * * * * * * * * * * * *,a i i ,19,求方阵次对角线元素之和,main( ) int i,j,a44=1,2,3, 4,5,6,7,8,9,10,11,12,13,14,15,16;int sum=0;for( i=0 ; i4 ; i+ ) sum+= ; printf(“sum=%dn“,sum); ,* * * * * * * * * * * * * * * *,a i 3-i ,20,例5 求方阵主对角线以上的元素之和1,main( ) int i,j,a44=1,2,3, 4,5,6,7,8,9,10,11,12,13,14,15,16;int sum=0;for( i=0 ; i4 ; i+ ) for( j=0 ; j4 ; j+ )sum+=a i j ; printf(“sum=%dn“,sum); ,* * * * * * * * * * * * * * * *,if( i=j ),21,例6 求方阵主对角线以上的元素之和2,main( ) int i,j,a44=1,2,3, 4,5,6,7,8,9,10,11,12,13,14,15,16;int sum=0;for( i=0 ; i4 ; i+ ) for( )sum+=a i j ; printf(“sum=%dn“,sum); ,* * * * * * * * * * * * * * * *,j=i ; j4 ; j+,22,例7 打印杨辉三角形(10行),1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ,#include #define N 10 main() int aN+1N+1,i,j;clrscr();for (i=1;i=N;i+)ai1=1; aii=1;for (i=3;i=N;i+)for (j=2;ji;j+)aij=ai-1j-1+ai-1j;for (i=1;i=N;i+) for (j=1;j=i;j+) printf(“%5d“,aij);printf(“n“); ,23,数组与循环计算,5.6 在一组无序且不重复的数据中查找一个数,若有则显示该数所在位置,否则输出提示“Not Exist!” 5.7 用折半查找法在一组按程序排列且不重复的数据中,若有则显示该数所在位置,否则输出提示“Not Exist!” 5.8 在一组不重复的数据中,删除指定位置的数。 5.9 将一维数组中元素向左循环移位,移位次数由键盘输入。 5.10将存放在数组中的一组数据按逆序重排,并实现输出。 5.11用冒泡法对从键盘输入的n个数从小到大排列。 5.12用选择排序法对从键盘输入的n个数从小到大排列。 5.13将两个已排好序(升序)的数组,合并后存放在另一个数组中,且合并后的数组也是有序排列。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号