水题
#include<iostream>
#include<cstdio>#include<cmath>
#include<cstring>
using namespace std;
int a[100][100];
int main()
{ int n; //找出循环规律
memset(a,0,sizeof(a));
while(cin>>n)
{ int x=0,y=(n-1);
int flag=1;
while(flag<=(n*n))
{ while(x<n&&a[x][y]==0)
{ a[x][y]=flag;
x++; flag++;
}
while(y>0&&a[x][y]==0)
{ a[x][y]=flag;
y--; flag++;
}
while(x>0&&a[x][y]==0)
{ a[x][y]=flag;
x--; flag++;
}
while(y<n&&a[x][y]==0)
{ a[x][y]=flag;
y++; flag++;
}
}
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{ cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}
找出规律 4次累加为一组大循环,对是否进行过操作与越界进行判断,对每次的循环开始因为while的特性应是未操作过的位置。