二维数组的遍历是考试中的重点和难点之一,尤其是蛇形填数尤为重要,下面我们来讨论一下二维数组的遍历。
一、二维数组的正向遍历
1、正向行遍历
代码框架:外循环跑行,内循环跑列
for(i=0;i<row;i++)
for(j=0;j<col;j++)
scanf("%d",++sum);
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(i=0;i<row;i++)
for(j=0;j<col;j++)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
2、正向列遍历
代码框架:外循环跑列,内循环跑行
for(j=0;j<col;j++)
for(i=0;i<row,i++)
a[i][j]=++sum;
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(j=0;j<col;j++)
for(i=0;i<row;i++)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
二、二维数组的反向遍历
1、反向行遍历
(1)第一种:
代码框架:外循环跑行,内循环跑列
for(i=0;i<row;i++)
for(j=col-1;j>=0;j--)
a[i][j]=++sum;
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(i=0;i<row;i++)
for(j=col-1;j>=0;j--)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
(2)第二种:
代码框架:外循环跑行,内循环跑列
for(i=row-1;i>=0;i--)
for(j=col-1;j>=0;j--)
a[i][j]=++sum;
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(i=row-1;i>=0;i--)
for(j=col-1;j>=0;j--)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
2、反向列遍历
(1)第一种:
代码框架:外循环跑列,内循环跑行
for(j=col-1; j>=0;j--)
for(i=0;i<row;i++)
a[i][j]=++sum;
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(j=col-1; j>=0;j--)
for(i=0;i<row;i++)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
(2)第二种:
代码框架:外循环跑列,内循环跑行
for(j=col-1;j>=0;j--)
for(i=row-1;i>=0;i--)
a[i][j]=++sum;
#include <stdio.h>
#define N 10
int a[N][N];
int main()
{
int i,j,row,col,sum=0;
scanf("%d%d",&row,&col);
for(j=col-1;j>=0;j--)
for(i=row-1;i>=0;i--)
a[i][j]=++sum;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}