二维数组专题总结.doc_第1页
二维数组专题总结.doc_第2页
二维数组专题总结.doc_第3页
二维数组专题总结.doc_第4页
二维数组专题总结.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

二维数组所有考点总结 2010-10-21 所有用到的的数组是:a33=23,46,11,99,45,82,72,90,21;一:遍历打印输出二维数组的元素 #include void main() int a33=23,46,11,99,45,82,72,90,21; for(int i=0;i3;i+) for(int j=0;j3;j+) printf(%d ,aij); printf(n); 思路:【1:每一个下标号对应的元素值是唯一的;2:因为是二维数组,必须要遍历行,列所以需要两个循环变量;3:在每一次循环遍历列数后,就用换行语句,可以打印输出标准的行列格式】二:逆序输出二维数组的元素#include void main() int a33=23,46,11,99,45,82,72,90,21; for(int i=2;i=0;i-) for(int j=2;j=0;j-) printf(%d ,aij); 思路:【1:每一个下标号对应唯一的元素值;2:当下标号发生顺序改变的时候,他们所代表的元素值也发生顺序变化。】三:求二维数组的最值,每一行最值,每一列最值/*求整个二维数组的最大值*/#include void main() int a33=23,46,11,99,45,82,72,90,21; int max=a00;/*这里必须将max赋初始值,初始值为二维数组中的元素,一般定义为第一个元素*/ for(int i=0;i3;i+) for(int j=0;j3;j+) if(maxaij) max=aij; printf(%d n,max);思路:【1:必须声明一个临时的最大值,最好是二维数组中的任何一个元素值,不能比二维数组中的最小值还要小,比最大值还要大!2:循环遍历二维数组的每一个元素值,一一比较,比临时最大值还大的话,就覆盖掉。】/*求每一行的最大值*/#include void main() int a33=23,46,11,99,45,82,72,90,21; int max=a00; for(int i=0;i3;i+) max=ai0;/*将max归位到每一行的第一个值*/ for(int j=0;j3;j+) if(maxaij) max=aij; printf(第 %d 行的最大值是:%dn,(i+1),max);/*i+1是因为i是从0开始,为了符合人们日常说法,就加1*/ 思路:【1:求每一行的最值,先临时设置一个值是二维数组里面的一个元素值;2:遍历每一列,再遍历行的总数次,并且每遍历下一次的时候,最值要归位。不能将以前的最值拿下来比较】/*求每一列的最大值*/#include void main() int a33=23,46,11,99,45,82,72,90,21; int max=a00; int i,j; for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); printf(n); for(j=0;j3;j+) max=a0j; for(i=0;i3;i+)/*求每一列的最大值就遍历行,求每一行的最值就遍历列*/ if(maxaij) max=aij; printf(第 %d 列的最大值是:%d n,(j+1),max); 三:求二维数组的总和和平均值,每行每列的和还有平均值#include void main() int a33=23,46,11,99,45,82,72,90,21; int s=0,s1=0,s2=0; int i,j; printf(输出的标准格式如下:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); printf(n); for(i=0;i3;i+) for(j=0;j3;j+) s=s+aij;/*s的初始值必须为0*/ printf(该二维数组的和:%3d 平均值是:%dn,s,s/9);printf(n);for(i=0;i3;i+)s1=0;/*求每行的和前需要对s1进行清零*/ for(j=0;j3;j+) s1=s1+aij; printf(第 %d 行的和是: %3d 平均值是: %dn,(i+1),s1,s1/3);printf(n);for(i=0;i3;i+)s2=0;/*求每一列的和前同样要对S2进行清零*/for(j=0;j3;j+)s2=s2+aji;/*for语句不必交换顺序,只需要将二维数组元素的下标号进行互换后就可以了,因为第一个下标号始终代表行,第二个下标号始终代表列*/printf(第 %d 列的和是: %3d 平均值是: %dn,(i+1),s2,s2/3);思路:【1:求累加之和的固定模式是:int s=0;s=s+变化的值,就是指循环遍历的数组元素值;2:在求每行,每列的和的时候,也是采用求累加之和的固定模式,求每一行的和就遍历每一列,求每一列。就遍历每一行;3:在求每一行,每一列的和是时,记住要清0】四:求该数组的对角线之和/*只有行与列相同的数组才有对角线,且只有两条对角线*/#include void main() int a33=23,46,11,99,45,82,72,90,21; int s1=0,s2=0; int i,j; printf(输出的标准格式如下:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); for(i=0;i3;i+)for(j=0;j3;j+)if(i+j=2)s1=s1+aij;printf(该数组的左对角线和是:%3d nn,s1);for(i=0;i3;i+)for(j=0;j3;j+)if(i=j)s2=s2+aij;printf(该数组的右对角线和是:%3d n,s2);思路:【1:任何行列都相等的的二维数组,都有两条对角线和;2:左对角线之和判断条件是:行列加和绝对等于当前数组的最大长度减一;3:右对角线之和判断条件是:行列都相等】五:将数组进行行列互换【矩阵互换】#include void main() int a33=23,46,11,99,45,82,72,90,21; int b33; int i,j; printf(输出的标准格式如下:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); for(i=0;i3;i+)for(j=0;j3;j+)bij=aji;printf(n行列互换后:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%d ,bij);printf(n);思路:【1:必须要申请一个数组,要求长度不变,行列是互换的;2:在遍历原数组的时候,只要保证行列的循环变量颠倒位置即可】六:将该数组的进行从小到大排序,每行,每列从小到大排序#include void main() int a33=23,46,11,99,45,82,72,90,21; int i,j,m,n;printf(二维数组的标准形式如下:n); for ( i = 0; i 3; i+) for ( j = 0; j 3; j+) printf(%d ,aij); printf(n); printf(n); for ( i = 0; i 3; i+) for ( j = 0; j 3; j+) for (int m = 0; m 3; m+) for (int n = 0; n 3; n+) if (aij amn) int t = aij;aij = amn;amn = t; printf(二维数组从小到大排序是:n);for ( i = 0; i 3; i+) for ( j = 0; j 3; j+) printf(%d ,aij);printf(n);#include void main() int a33=23,46,11,99,45,82,72,90,21; int i,j,k;printf(二维数组的标准形式如下:n); for ( i = 0; i 3; i+) for ( j = 0; j 3; j+) printf(%d ,aij);printf(n); printf(n); for(k=0;k3;k+) for(i=0;i2;i+) for(j=0;jakj+1)int t=akj;akj=akj+1;akj+1=t; printf(二维数组每一行从小到大排序是:n);for ( i = 0; i 3; i+) for ( j = 0; j 3; j+) printf(%d ,aij);printf(n);只对没行列排序:思路:【1:将每一行,列都看作是一维数组,利用一维数组排序的规则进行排序即可;2:遍历的总次数是:最大长度减一;3:遍历的趟数是总数减去次数的循环变量即可;】对整个二维数组:#include void main()int a33=23,46,11,99,45,82,72,90,21;int i,j,m;int b9;/输出标准形式printf(标准形式如下:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%d ,aij);printf(n);/按照一维数组模式进行存储值printf(n一维数组排序后:n);for(i=0;i3;i+) /i=0 m=i*3; /m=0 m=3 m=6for(j=0;j3;j+) bm=aij; /b0 1 2 3 4 5 6 7 8m+; /1 2 3 4 5 6 7 8

温馨提示

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

评论

0/150

提交评论