null第七章二维数组
7.1基本操作第七章二维数组
7.1基本操作二维数组:一维数组,数组中每个元素是类型相同的一维数组。
定义:
类型说明符 数组名[常量
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式][常量表达式]
float a[3][4]
数组名为a,有12个元素,下标从0开始,即a[0][0] a[0][1] …a[2][3]
在内存中按先行后列存放
a[0][0] a[0][1] …a[2][3]
二维数组二维数组数组元素的引用形式
数组名[下标][下标]二维数组二维数组初始化
分行给二维数组赋初值
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
按数组排列顺序对各元素赋初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
对部分元素赋初值
int a[3][4]={{1},{5},{9}}; 其余元素值自动为0
int a[3][4]={1,5,9};二维数组二维数组赋值
int a[2][3];
a[0][0]=1
a[0][1]=1
a[0][2]=1
a[1][0]=1
a[1][1]=1
a[1][2]=1for(j=0;j<3;j++)
a[0][j]=1 ;for(i=0;i<2;i++)/* */
a[i][j]=1;二维数组二维数组1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=1; if (i==j)
else
a[i][j]=0;二维数组二维数组1 2 2 2
0 1 2 2
0 0 1 2
0 0 0 1for(i=0;i<4;i++)
for(j=0;j<4;j++)
if (i==j) a[i][j]=1;
else a[i][j]=0; else if (i
main()
{
int i,j;
int a[3][3];
for(i=0;i<3;i++)
for (j=0;j<3;j++)
a[i][j]=(i+1)*10+j;
}二维数组二维数组接收
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);二维数组二维数组输出
for(i=0;i<4;i++)
for (j=0;j<4;j++)
printf(“%d”, a[i][j]);
printf(“\n”);
{
}
0 1 1 1
2 0 1 1
2 2 0 1
2 2 2 07.2 二维数组名作为参数7.2 二维数组名作为参数void fun (double a[M][N] )
void fun (double a[ ][N] )
main( )
{double x[M][N];
fun(x);
}null#define M 3
#define N 4
void LineMax ( int x[ ][N] )
{
int i,j,colum;
for(i=0;i
void reverse( int x[ ][2], int y[ ][3] );
main( )
{
int x[ 3 ][ 2 ] = { {1,2}, {3,4}, {5,6} };
int *p, y[ 2 ][ 3 ];
reverse( x, y ); /* 矩阵转置 */
p = &y[0][0]; /* 取首地址 */
while( p <= &y[ 1 ][ 2 ] )
printf(“%d, ”, *p++ ); /* 打印1,3,5,2,4,6,*/
}转置函数的实现转置函数的实现void reverse( int x[ ][ 2 ], int y[ ] [ 3 ] )
{
int i, j;
for( i=0; i<3; i++ )
for( j=0; j<2; j++ )
y[ j ][ i ] = x[ i ][ j ];
}
/* 作为参数的多维数组,不指定第一维的大小 */二维字符数组二维字符数组char s[3][4]={"ABC","DEF","GHI"};
for(i=0;i<3;i++)
printf("%s\n",s[i]);null二维数组小结
double arr[ 10 ][ 20 ];
存储时按行排列
下标范围
arr[ 0 ][ 0 ] – arr[ 9 ][ 19 ]
初始化
int x[ 3 ][ 2 ] = { {1,2}, {2,2} {3,2}};
数组元素访问
arr[ 0 ][ 0 ] = arr[ 1 ][ 2 ] + 9.2;
参数声明(传数组首地址)
fun( int x[ ][ 2 ] )