数组元素类型为一维数组的一维数组被称为二维数组。
二维数组的初始化
int a[2] [3]={{1,2,3},{4,5,6}};
输入
for(i=0;i<3;i++)//列
{
for(j=0;j<4;j++)//行
{
scanf("%d",&a[i][j]);
}
}
输出
for(i=0;i<3;i++)//列
{
for(j=0;j<4;j++)//行
{
printf("%d",a[i][j]);
}
}
应用
行列互换
#include<stdio.h>
int main( )
{
int i,j;
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2];
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<2;j++)
{
printf("%d",a[j][i]);
}
printf("\n");}
}
无初始化的
#include<stdio.h>
int main( )
{
int i,j;
int a[2][3];
int b[3][2];
for(i=0;i<2;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}}
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<2;j++)
{
printf("%d",a[j][i]);
}
printf("\n");}
}
矩阵的鞍点
#include<stdio.h>
#define N 3
#define M 4
int main( )
{
int a[N][M],i,j,max,k;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
scanf("%d",&a[i][j]);
}//输出
for(i=0;i<N;i++)//找到第i行哪一列的值最大
{
max=0;//假设第0列最大即a[i][0]最大
for(j=1;j<M;j++)//因为第0列为最大,所以从下一列开始比较
if(a[i][max]<a[i][j])
max=j;//出来的第i列的最大的一个
for(j=0;j<N;j++)//比较三行看看这个数是不是在这列里最小
{if(a[j][max]<a[i][max])
{
break;//如果这一行的最大的一个不在本列最小 则没鞍点
} }
if(j==N)
break; //如果循环结束a[i][max]还是最小则这个就是鞍点
}
if(i==N)//如果循环可以正常结束则说明没找到鞍点
printf("没有鞍点");//
else{
printf("鞍点在第%d行第2%d列!\n",i+1,max+1);//数列的下标比真实的小一
}
}
杨辉三角
#include<stdio.h>
#define N 10
#define M 10
int main( )
{
int a[N][M];
int i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
a[i][j]=1;
}
for(i=0;i<N;i++)//控制行
{
for(j=1;j<i-1;j++)//从第二列开始第一列都是一,最后一列也是一
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<N;i++){
for(j=0;j<i;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
三维数组的初始化
3,4,2 一个大括号里有三个中括号,三个中括号中的一个有四个小括号,四个小括号里中其中一个有2个数值