大学C语言 数组课件.ppt
文本预览下载声明
例7.17 分析下列程序的运行结果。 #include stdio.h int maxvalue(int array[][4]) { int i,j,max; max=array[0][0]; for(i=0;i3;i++) for(j=0;j4;j++) if(maxarray[i][j]) max=array[i][j]; return max; } int main( ) { int a[3][4],i,j,large; printf(please input array a:\n); for(i=0;i3;i++) for(j=0;j4;j++) scanf(%d,a[i][j]); large=maxvalue(a); printf(max value is %d\n,large); return 0; } please input array a: 0 1 2 3 ? 5 7 9 3 ? 8 6 4 2 ? max value is 9 程序运行情况: 作 业 第7章 习题 1、2、3(选作)、4(3)/(4) * 假设数组为整型,考虑各元素的地址。 思考:求最大值所在的下标 P166页——选择法排序的思路。 选择排序的基本思想: 对待排序的数组元素序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。 这样,经过i遍处理之后,前i个记录的位置已经是正确的了。 本例和教材的程序稍有不同,请同学自行分析。 注意:二维数组中第2维的长度在任何情况下都不能省略。 二维数组的初始化 说明 1、分行给二维数组赋初值。 2、按数组的排列顺序对各数组元素赋初值。 第七章 数组 3、可以对部分元素赋初值。 int a[2][3]={{1,2,3},{4,5,6}}; int b[2][3]={1,2,3,4,5,6}; int c[3][4]={{1},{5},{9}}; 4、在对全部数组元素赋初值时,数组第一维的长度可以不指定。 int e[ ][3]={1,2,3,4,5,6}; int d[3][4]={{1},{5,6},{0,9,7}}; int f[ ][4]={{0,0,3},{0},{0,10}}; 1 2 3 4 5 6 1 2 3 4 5 6 1 0 0 0 5 0 0 0 9 0 0 0 1 0 0 0 5 6 0 0 0 9 7 0 1 2 3 4 5 6 0 0 3 0 0 0 0 0 0 10 0 0 5、定义时可以只对部分元素赋初值而省略第一维的长度,但必须分行赋初值。 二维数组程序举例 例7.9 输入一个3×3矩阵,并求次对角线元素之和。 #include stdio.h void main() { int i,j,sum=0; int a[3][3]; for (i=0;i3;i++) for (j=0;j3;j++) scanf(“%d”,a[i][j]); for (i=0;i3;i++) for (j=0;j3;j++) if (i+j==2) sum+=a[i][j]; printf(“sum=%d\n,sum); } 二维数组的输入 对数组元素的处理 能否使用一重循环实现? for(i=0;i3;i++) sum+=a[i][2-i]; 例7.10 有一个3*4矩阵,输出最大元素的值,及其所在的行号和列号。 #include stdio.h void main() { int i,j,max,row=0,colum=0; int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for (i=0;i=2;i++) for (j=0;j=3;j++) if (a[i][j]max) {max=a[i][j]; row=i; colum=j;} printf(“max=%d,row=%d,colum=%d\n”,
显示全部