定义
- 类型 数组名[常量表达式][常量表达式]
- int a[3][4] :一个3行4列的数组
- 可以看出特殊的一维数组
引用
int a[2][2]={1,2,3,4};
a[0][1]:1
a[0][2]:2
a[1][0]:3
a[1][1]:4
#include<stdio.h>
void main()
{
int a[2][2];
int i,j;
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
a[1][1] = 4;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
初始化
#include<stdio.h>
void main()
{
//都正确
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,10};
int c[][4]={1,2,3,4,5,6,7,8,9,10,11,10};//第一个可以省略
int d[3][4]={{1},{2},{3}};//1000 2000 3000
int e[3][4]={{1,1,1},{},{1}};//1110 0000 1000
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",e[i][j]);
}
printf("\n");
}
}
例题
有一个3*4的矩阵,输出最大值,及其他行号,列号
// 有一个3*4的矩阵,输出最大值,其他行号,列号
#include<stdio.h>
void main()
{
int array[3][4]={100,2,43,4,5,96,100,8,9,10,11,12};
int i,j,h=0,l=0;
int max=array[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(array[i][j]>max)
{
max = array[i][j];
h = i;
l = j;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(max==array[i][j])
printf("最大值是%d,下标分别是%d,%d\n",max,i,j);
}
}
}
二维数组行元素列元素互换
#include <stdio.h>
//行列互换
int main()
{
int i,j,colum,row;
int a[2][3]={1,2,3,4,5,6},b[3][2];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("转化后为:\n--------------------\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",b[i][j]);
}
printf("\n");
}
return 0;
}
对角线求和
#include <stdio.h>
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum1=0,sum2=0;
for(i=0;i<3;i++)
{
sum1 += a[i][i];
sum2 += a[i][2-i];
}
printf("两条对角线分别是:%5d%5d",sum1,sum2);
}