代码如下,打印回形矩阵或者说二维数组:
#include<stdio.h>
#include<string.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int a[100][100]={};
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
scanf("%d",&a[i][j]); //做题目时的读取输入
int k=m;
int l=n;
while(2*k>=m&&2*l>=n)
{
for(int p=n-l;p<l-1;p++) printf("%d\n",a[m-k][p]); //把数字一行行剥掉
for(int q=m-k;q<k-1;q++) printf("%d\n",a[q][l-1]);
if(m-k!=k-1)
for(int r=l-1;r>n-l;r--) printf("%d\n",a[k-1][r]); //这里判断边界,以下同
else
printf("%d\n",a[k-1][l-1]);
if(n-l!=l-1)
for(int s=k-1;s>m-k;s--) printf("%d\n",a[s][n-l]);
else if(m-k!=k-1)
printf("%d\n",a[k-1][n-l]);
k--;
l--;
}
return 0;
}
这种做法重点在于边界条件的确定: