今天做了一道题觉得很有趣,决定写下来
#include <stdio.h>
int main() {
int arr[100][100];
int m;
int n;
scanf("%d%d",&m,&n);
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
scanf("%d",&arr[i][j]);
}
}
int left = 0,right = n -1;
int top = 0, down = m-1;
int j = 0, i = 0;
int all = m*n;
for(int k = 0; all > 0; k++) {
k %= 4;
switch(k) {
case 0: {
while(1){
printf("%d",arr[i][j]);
(--all) && printf(" ");
if(j != right){
j++;
}else{
i++;
top++;
break;
}
}
break;
}
case 1: {
while(1){
printf("%d",arr[i][j]);
(--all) && printf(" ");
if(i != down){
i++;
}else{
j--;
right--;
break;
}
}
break;
}
case 2: {
while(1){
printf("%d",arr[i][j]);
(--all) && printf(" ");
if(j != left){
j--;
}else{
i--;
down--;
break;
}
}
break;
}
case 3: {
while(1){
printf("%d",arr[i][j]);
(--all) && printf(" ");
if(i != top){
i--;
}else{
j++;
left++;
break;
}
}
break;
}
}
}
return 0;
}
输入
矩阵的长和宽
矩阵数组