《高级语言程序设计教学课件》第6章数组课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《高级语言程序设计教学课件》第6章数组课件.ppt》由会员分享,可在线阅读,更多相关《《高级语言程序设计教学课件》第6章数组课件.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章 数组数组6.1一维数组一维数组6.3二维数组及多维数组二维数组及多维数组6.5字符数组和字符串字符数组和字符串2 2一维一维数组元素的输入数组元素的输入 int i,a6;for(i=0;i6;i+)scanf(“%d”,&ai);for(i=0;i6;i+)printf(“%5d”,ai);一维一维数组元素的输出数组元素的输出 3 3【例例例例6-36-3】从键盘输入从键盘输入10个互不相同的整数并存放个互不相同的整数并存放在一维数组中,找出值最大的数组元素,并输出最在一维数组中,找出值最大的数组元素,并输出最大值所在的元素下标大值所在的元素下标0 1234567898-930
2、 43 87 9823 79 62 28kk k=0;k=0;for(i=1;i10;i+)for(i=1;i10;i+)if if(akai(akai)k=i;k=i;找最大找最大值值,这两个这两个程序的程序的区别区别?max=0;max=0;for(i=1;i10;i+)for(i=1;i10;i+)if if(amaxai(amaxai)max=i;max=i;printf(“max=a%d=%dn,printf(“max=a%d=%dn,maxmax,a,amaxmax););max=a0;max=a0;for(i=1;i10;i+)for(i=1;i10;i+)if if(max a
3、i(max ai)max=ai;max=ai;printf(“max=%dn,printf(“max=%dn,maxmax););5 5【例例例例6-56-5】从键盘上输入一个数从键盘上输入一个数x,在给定的数组,在给定的数组a中查找中查找x。如果找到了,输出相应的下标,否则,。如果找到了,输出相应的下标,否则,输出输出“Not Found”。50 123456789221936 80 98 1220 55-8 165555555555555555 flag=0;flag=0;for(i=0;i10;i+)for(i=0;i10;i+)if(ai=x)if(ai=x)printf(Index
4、is%dn,i);printf(Index is%dn,i);flag=1;flag=1;break;break;if(if(flag=0flag=0)printf(“Not Foundn”);)printf(“Not Foundn”);二分二分查查找(折半找(折半查查找,找,对对有序表的有序表的查查找)找)1、思想:、思想:表头为表头为left,表尾为,表尾为right,k为要查找的关键字为要查找的关键字计算中间数据的序号计算中间数据的序号mid=(left+right)/2;若若 k=amid,成功;否则:,成功;否则:若若 kamid,则,则 left=mid+1;重复;重复1 当当 l
5、eftright时,不成功。时,不成功。折半折半查查找找过过程程0123456789101101234567891011X=20rightleft,查找失败查找失败01234567 891011012345678910110123456789101101234567891011X=79 9【例例】读入读入10个整数,将数组中的元素逆序个整数,将数组中的元素逆序存放存放n分析分析当程序中读入任意当程序中读入任意10个数:个数:8、-9、30、43、87、98、23、79、62、28时时0 1234567898-930 43 87 9823 79 62 2828286262797923239898
6、878743433030-9-98 8 for(i=0;i5;i+)for(i=0;i5;i+)t=ai;t=ai;ai=a9-i;ai=a9-i;a9-i=t;a9-i=t;1010 for(i=0,j=9;ij;i+,j-)t=ai;ai=aj;aj=t;ij1111【例例】已知十个整数升序排列,现输入整数已知十个整数升序排列,现输入整数x,要求将要求将x插入到合适的位置,使得数列依然升序插入到合适的位置,使得数列依然升序n分析分析1.找到插入位置找到插入位置p(默认插最后,设(默认插最后,设x为为18)2.将插入位置将插入位置p之后的元素后移;之后的元素后移;3.将将x插入位置插入位置p
7、0 12345678910147912151720213018p1818181818181830212018for(i=0,p=10;i10;i+)for(i=0,p=10;i10;i+)if(xai)if(x=p+1;i-)for(i=10;i=p+1;i-)ai=ai-1;ai=ai-1;ap=x;ap=x;查找并删除查找并删除ai=ai+1/*/*找到后前移找到后前移找到后前移找到后前移,且数组元素个数减少且数组元素个数减少且数组元素个数减少且数组元素个数减少*/if(flag)if(flag)for(i=p;in-1;i+)for(i=p;in-1;i+)ai=ai+1;ai=ai+1
8、;n=n-1;n=n-1;1313【例例例例6-66-6】输入一个正整数输入一个正整数n(1n10),再输入),再输入n个整数,用选择法将它们从小到大排序后输出个整数,用选择法将它们从小到大排序后输出 for(k=0;kn-1;k+)for(k=0;kn-1;k+)min=k;min=k;for(i=k+1;in;i+)for(i=k+1;in;i+)if(aiamin)if(aiamin)min=i;min=i;temp=amin;temp=amin;amin=ak;amin=ak;ak=temp;ak=temp;1414排序问题(冒泡排序法及排序问题(冒泡排序法及改进改进)for(i=0;
9、in-1;i+)for(i=0;in-1;i+)for(j=0;jn-i-1;j+)for(j=0;jaj+1)if(ajaj+1)temp=aj;temp=aj;aj=aj+1;aj=aj+1;aj+1=temp;aj+1=temp;for(i=0;in-1;i+)for(i=0;in-1;i+)flag=0;flag=0;/无交换无交换无交换无交换0 0 for(j=0;jn-i-1;j+)for(j=0;jaj+1)if(ajaj+1)temp=aj;temp=aj;aj=aj+1;aj=aj+1;aj+1=temp;aj+1=temp;flag=1;flag=1;if(!flag)br
10、eak;if(!flag)break;/无交换,排序完成无交换,排序完成无交换,排序完成无交换,排序完成 1515思考问题:思考问题:n在数学中我们常常会用到矩阵在数学中我们常常会用到矩阵 ,它的结,它的结构如下:构如下:n n怎样用一种数据结构来表示矩阵呢?怎样用一种数据结构来表示矩阵呢?16166.3二维数组及多维数组二维数组及多维数组n1、二维数组的定义、二维数组的定义n2、二维数组理解、二维数组理解n3、二维数组元素的引用、二维数组元素的引用n4、二维数组元素的初始化、二维数组元素的初始化n5、二维数组的应用、二维数组的应用1717n1、二维数组的定义、二维数组的定义定义方式:定义方式
11、:数据类型数组名数据类型数组名数据类型数组名数据类型数组名 常量表达式常量表达式常量表达式常量表达式1 1 1 1常量表达式常量表达式常量表达式常量表达式2 2 2 2 ;数组元素的存放顺序数组元素的存放顺序原因原因:内存是一维的内存是一维的二维数组:按行序优先二维数组:按行序优先例例 int a34;float b25;int a3,4;int a3,4;行数行数下标从下标从0 0开始开始列数列数下标从下标从0 0开始开始元素个数元素个数=行数行数*列数列数int int a32a32543210a21a20a11a10a01a001818例例例例 int a34;每个元素每个元素每个元素每
12、个元素aiai是由包含是由包含是由包含是由包含4 4个个个个元素的一维数组组成元素的一维数组组成元素的一维数组组成元素的一维数组组成n2、二维数组的理解、二维数组的理解0a001a012a023a034a105a116a127a138a209a2110a2211a23a0a0a1a1a2a2a00a01a02a03a10a11a12a13a20a21a22a23a00a00 a01a01 a02a02 a03a03a10a10 a11a11 a12a12 a13a13a20a20 a21a21 a22a22 a23a23把把二维数组二维数组二维数组二维数组a a理解成理解成由由3 3个元素组成
13、的一维数组个元素组成的一维数组个元素组成的一维数组个元素组成的一维数组a2a2a1a1a0a01919n3、二维数组元素的引用、二维数组元素的引用数组名数组名数组名数组名 下标下标下标下标1 1下标下标下标下标2 2 n4、二维数组元素的初始化、二维数组元素的初始化分行初始化分行初始化按元素排列顺序初始化按元素排列顺序初始化例例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化全部初始化例例 int a3=1,4,5;a00 a01 a02 a10 a11 a12100450第一维长度省略初始化第一维长度省略初始化第一维长度省略初始化
14、第一维长度省略初始化例例 int a23=1,2,4;a00 a01 a02 a10 a11 a12120400部分初始化部分初始化部分初始化部分初始化例例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化全部初始化全部初始化全部初始化例例 int a23=1,2,4;a00a01a02a10a11a12124000部分初始化部分初始化部分初始化部分初始化例例 int a3=1,2,3,4,5;a00a01a02a10a11a12123450第一维长度省略初始化第一维长度省略初始化第一维长度省略初始化第一维长度省略初始化2020int
15、 a34;int a34;for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)scanf(%d,&aij);scanf(%d,&aij);二维数组元素的输入输出二维数组元素的输入输出for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j arowcol,令令row=i;col=j 3.输出输出:row、col和和arowcol2323【例例例例6-106-10】在一个二在一个二在一个二在一个二维维维维数数数数组组组组中,找出最大的元素中,找出最大的元素中,找出最大的元素中,找出最大的元素
16、值值值值以及最大元素的行下以及最大元素的行下以及最大元素的行下以及最大元素的行下标标标标和列下和列下和列下和列下标标标标,并,并,并,并输输输输出出出出该该该该数数数数组组组组#inlcude#inlcude main()main()int row,col,i,j;int row,col,i,j;int a32;int a32;/*/*输入输入3 x 23 x 2的数组的数组*/for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j2;j+)for(j=0;j2;j+)scanf(“%d”,&aij);scanf(“%d”,&aij);2424 row=0;row=0;co
17、l=0;col=0;for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j2;j+)for(j=0;j2;j+)if(arowcolaij)if(arowcolaij)row=i;row=i;col=j;col=j;2525 printf(“max a%d%d=%dn”,row,col,printf(“max a%d%d=%dn”,row,col,arowcol);arowcol);2626【例例例例6-116-11】输入一个正整数输入一个正整数n(1n6),根据下),根据下式生成式生成1个个nn的方阵,转置(行列互换)后输出的方阵,转置(行列互换)后输出分析:分析:1.输
18、入输入:方阵的行数方阵的行数 n2.处理处理:(a)循环计算出循环计算出nn方阵每个元素的值;方阵每个元素的值;(b)将将nn方阵转置;方阵转置;3.输出输出:循环输出转置前和转置后的方阵。循环输出转置前和转置后的方阵。2727例如:例如:n=3 转置前转置前 转置后转置后for(i=0;in;i+)for(i=0;in;i+)for(j=0;ji;j+)for(j=0;ji;j+)temp=aij;temp=aij;aij=aji;aij=aji;aji=temp;aji=temp;28281、先输入、先输入n的值的值#include#include main()main()int i,j,
19、k,n,temp;int i,j,k,n,temp;int int a66=0;a66=0;printf(Enter N:);printf(Enter N:);scanf(%d,&n);scanf(%d,&n);29292、计算并打印出原始矩阵、计算并打印出原始矩阵 for(i=0;in;i+)for(i=0;in;i+)for(j=0;jn;j+)for(j=0;jn;j+)aij=i*n+j+1;aij=i*n+j+1;printf(%4d,aij);printf(%4d,aij);printf(“n”);printf(“n”);30303、将矩阵转置、将矩阵转置 for(i=0;in;i
20、+)for(i=0;in;i+)for(j=0;ji;j+)for(j=0;ji;j+)temp=aij;temp=aij;aij=aji;aij=aji;aji=temp;aji=temp;31314、打印出转置后的矩阵、打印出转置后的矩阵 printf(“printf(“转转转转置矩置矩置矩置矩阵阵阵阵:n);:n);for(i=0;in;i+)for(i=0;in;i+)for(j=0;jn;j+)for(j=0;jn;j+)printf(%4d,aij);printf(%4d,aij);printf(n);printf(n);3232【例例6-12】求求NN阶二维数组的主对角线元阶二维
21、数组的主对角线元素之和素之和 sum=0;sum=0;for(i=0;in;i+)for(i=0;in;i+)sum=sum+aii;sum=sum+aii;3333【例例】求求NN阶二维数组每一行元素之和阶二维数组每一行元素之和数组数组 a数组数组 bb0b1b23434【例例】求求NN阶二维数组每一行元素之和阶二维数组每一行元素之和 int b3=0;int b3=0;for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)bi+=aij;bi+=aij;for(i=0;i3;i+)for(i=0;i3;i+)printf(%5d,b
22、i);printf(%5d,bi);b0b1b23535main()main()int a66=0,i,j;int a66=0,i,j;for(i=0;i6;i+)for(i=0;i6;i+)/主对角线和第主对角线和第主对角线和第主对角线和第0 0列赋列赋列赋列赋1 1 ai0=1;aii=1;ai0=1;aii=1;for(i=2;i6;i+)for(i=2;i6;i+)/其他元素其他元素其他元素其他元素 a ai,j i,j=a=ai-1,j-1 i-1,j-1+a+ai-1,ji-1,j for(j=1;ji;j+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;aij=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计教学课件 高级 语言程序设计 教学 课件 数组
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内