文档详情

数组-二维数组.ppt

发布:2017-07-31约3.79千字共26页下载文档
文本预览下载声明
二维数组 二维数组的应用场合 二维数组定义 二维数组元素引用 二维数组初始化 二维数组编程常用算法 二维数组的应用场合 二维数组的定义 定义 数据类型 数组名[第一维长度][第二维长度]; 例子 int a[3][3] , b[4][5]; 二维数组元素的引用: 数组名[下标1][下标2]; 二位数组在内存中的存储形式 例:二维数组的输入和输出 #include stdio.h void main() { int score[2][3]; int i,j; for(i=0;i2;i++) { for(j=0;j3;j++) scanf(%d, score[i][j]); } for(i=0;i2;i++) { for(j=0;j3;j++) printf(%d , score[i][j]); printf(\n); } } ?例:输出二维数组元素的内存地址。 #include stdio.h void main() { int a[2][3], i,j; for(i=0;i2;i++) { for(j=0;j3;j++) printf(“a[%d][%d] DS:%x\n,i,j,a[i][j]); } } 二维数组初始化 初值表放在{ }内,应与元素在内存中存储顺序一致。 分行赋初值(第一维可省) int a[2][3]={ {1,2,3} , {4,5,6} }; int a[2][3]={ {1} , {4} }; int a[ ] [3]={1, 2, 3, 4, 5, 6}; 按数组的存储顺序对每个元素赋初值 int a[2][3]={1,2,3,4,5,6}; 二位数组举例:二维数组求最小值,输出其位置。 #include stdio.h void main() { float a[3][4]={ {1.0, 3.0, 5.2, 7.4,},{4.6, 5.5, 4.2, 1.2}, {10.5, 0.23,1.3, 0.5}}; int i, j, minrow=0,mincol=0; for(i=0; i3; i++) { for(j=0;j4;j++) { if(a[i][j]a[minrow][mincol]) { minrow = i; mincol = j; } } } printf(“zui xiao zhi :a[%d][%d]=%f”, minrow,mincol, a[minrow][mincol],); } 数组与矩阵——矩阵的相关算法 生成单位方阵 杨辉三角 打印杨辉三角(前8行8列)——书上习题 三.1 求两个矩阵之和 分析: 要求两个矩阵a、b的行列数相同。 对应元素之和: c[i][j]=a[i][j]+b[i][j] 矩阵的转置运算 方阵的转置阵 非方阵的转置 方阵的转置阵 建立一个5×5的整数矩阵,求它的转置矩阵并输出结果。 何谓转置? i行变成j列 a[i][j]——a[j][i] 例:求转置矩阵 /*对调a[i][j]和a[j][i] */ for(i=0;i3;i++) { for(j=0;ji;j++) /*列下标循环至主对角线*/ { temp=a[i][j]; a[i][j]= a[j][i]; a[j][i]=temp; } } 求两矩阵的乘积 分析: 新的矩阵c[2][2] 求两矩阵的乘积 for(i=0;i2;i++) { for(j=0;j2;j++) { for(k=0;k=2;k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } 矩阵各行元素的和 例:计算矩阵各行元素的和 例 3-12 某个班有5个同学,从键盘输入每个学生的信息,包括高数、英语和C语言的成绩,输出每个学生的平均分和全班各科的平均分。 int nScore[5][3],i,j; float fStudAverScore[5], fSubjectAverScore[3],fSumRow,fSumColumn; /*输入5个学生的各科成绩*/ printf(\nPlease input scores of students: ); for(i=0;i
显示全部
相似文档