412二维数组的引出及使用 3、对数组的部分元素赋初值 inta314={,23,3,0,4号};inta34={1,23,4,5,6}; 1200 1234 3000 560|0 0400 0000 4、对数组的全部元素赋初值时可以省略第一维的长度 系统会根据数据的个数和第二维的长度自动求出 第一维的长度 inta[4={{1,2},{0,3,4},{5}};数组a第一维长度为3 intb2l={1,2,3,4,5,6,7,8};数组b第一维长度为4
3、对数组的部分元素赋初值 int a[3][4]={{1, 2},{3},{0, 4}}; int a[3][4]={1,2,3,4,5,6}; 1 2 0 0 3 0 0 0 0 4 0 0 1 2 3 4 5 6 0 0 0 0 0 0 4、对数组的全部元素赋初值时可以省略第一维的长度 系统会根据数据的个数和第二维的长度自动求出 第一维的长度 数组a第一维长度为3 数组b第一维长度为4 int a[ ][4]={ {1, 2}, { 0, 3, 4 }, { 5 } } ; int b[ ][2]={ 1, 2, 3, 4, 5, 6, 7, 8 } ; 4.1.2 二维数组的引出及使用
412二维数组的引出及使用 例48:找出矩阵中最大的数,并输出其行号和列号5209 #include <stdio. h> 37126 void main( i int i, j, row=0, col-0, max; 104 8 inta34={5,2,0,9},{3,7,12,6},{10,4,1,8} max=a 0J0J max 12 for(i=0;i<3;i++) 输出: for(j=0;j4;j++) max 12 rowI if(ajil>max i max=aillil max=a 2 col 2 row=i; col==j printf(“max=%dn”,max); printf(max=al%%odin, row, col); }
#include <stdio.h> void main( ) { int i , j, row=0, col=0, max ; int a[3][4]={{5,2,0,9},{3,7,12,6},{10,4,1,8}}; max=a[0][0]; for ( i=0; i<3; i++ ) for ( j=0; j<4; j++ ) if ( a[i][j]>max ) { max=a[i][j] ; row=i ; col=j ; } printf(“max=%d\n”, max); printf(“max=a[%d][%d]\n”, row , col); } 例4-8: 找出矩阵中最大的数,并输出其行号和列号 max row 0 col 0 95 3 0 12 1 2 输出: max=12 max=a[1][2] 5 2 0 9 3 7 12 6 10 4 1 8 4.1.2 二维数组的引出及使用
412二维数组的引出及使用 例4-9:将一个矩阵进行转置即原来的行变为列) #include<stdio.h> void main( 输入数组a 5209 {inta|34l,b|43],i,j; 37126 for(i=0;i3;计+) for(j=0;j4;j++) 10418 scanf(%d", &ai[jl); a for(i=0;i<3;i+) 进行矩阵转置) 5310 for(j=0;j4;j++) bi=alli 2|7 输出数组b 0121 for(i=0;i<4;i+) {for(j=0;j3;j++) b[2 96/8 printf(%5d”,b[i[j) printf(n”);
#include<stdio.h> void main( ) { int a[3][4], b[4][3] , i , j ; for ( i=0 ; i<3 ; i++ ) for ( j=0 ; j<4 ; j++ ) scanf(“%d”, &a[i][j] ) ; 3 7 12 6 10 4 1 8 5 2 0 9 例4-9: 将一个矩阵进行转置(即原来的行变为列) 5 2 0 9 3 7 12 6 10 4 1 8 输入数组a 进行矩阵转置 a[0][ 2] b[2][ 0] a[2][ 1] b[1][ 2] 输出数组b for ( i=0 ; i<3 ; i++ ) for (j=0 ; j<4 ; j++) b[j][i]=a[i][j]; for ( i=0 ; i<4 ; i++ ) { for ( j=0 ; j<3 ; j++ ) printf(“%5d”, b[i][j]) ; printf(“\n”); } } 4.1.2 二维数组的引出及使用
42二维数组的引出及使用 例410:一个学习小组有5个人,每个人有三门课的考试成绩, 求每个人的总分和该学习小组各门课的平均成绩。 姓名高数英语C语言总分用一个二维数组 ar 85 78 88 来存放成绩 int s54; John 90 80 91 Mike 79 92 84 Alex 83 86 80 Karry 87 75 95 用一个一维数组 来存放各门课 的平均成绩 每个人三门课的成绩是输入的 float a 3; 总分和各门课的平均成绩是计算出来的
例4-10: 一个学习小组有5个人, 每个人有三门课的考试成绩, 求每个人的总分和该学习小组各门课的平均成绩。 姓名 高数 英语 C语言 总分 Mary 85 78 88 ? John 90 80 91 ? Mike 79 92 84 ? Alex 83 86 80 ? Karry 87 75 95 ? ? ? ? 用一个二维数组 来存放成绩 int s[5][4]; 用一个一维数组 来存放各门课 的平均成绩 每个人三门课的成绩是输入的 float a[3]; 总分和各门课的平均成绩是计算出来的 4.1.2 二维数组的引出及使用
412二维数组的引出及使用 #include<stdio. h 二维数组s存放每个学生的成绩 void main( f int i, i, s, sum; float a( 31 数组保存每门 课的平均分 for(i=0;i<5;i++) {for(j=0;j<3;j++) 输入一个学生3 scanf( %od", &siljd; 门课的成绩 sll=s0+s1+s2; 计算总分 for(j=0;j3;j++) sum=0;/注意赋初值的位置 对每一门课(即每一列) for(i=0; i<5; i++) 进行处理:先将每列的 5个成绩累加求和;再 sum=sums 将总和除5,得到每门 a[j=sum/5.0 课的平均分 (见下页)
#include<stdio.h> void main( ) { int i, j, s[5][4], sum; float a[3]; for(i=0; i<5; i++) { for(j=0; j<3; j++) scanf("%d", &s[i][j]); s[i][j]=s[i][0]+s[i][1]+s[i][2]; } for(j=0; j<3; j++) { sum=0; //注意赋初值的位置 for(i=0; i<5; i++) sum=sum+s[i][j]; a[j]=sum/5.0; } … (见下页) 输入一个学生3 门课的成绩 计算总分 4.1.2 二维数组的引出及使用 对每一门课(即每一列) 进行处理: 先将每列的 5个成绩累加求和; 再 将总和除5, 得到每门 课的平均分 数组a保存每门 课的平均分 二维数组s存放每个学生的成绩