输入一个数字i,需要返回的内容如下:
- 输入一个数字i,输出结果的矩阵是i行i列的。 矩阵从右上角开始,从1开始往下,每增加1行加1。 到第i行后,再往左,每左一列加1。 到头后再往上、往右、再往下…., 其中已经填上的数字不能覆盖,直接转向, 现要求输入任意元素i,返回矩阵内容;
code(仅供参考):
代码语言:javascript复制#include <iostream>
using namespace std;
int main(){
int i;
cout<<"请输入i:"<<endl;
cin>>i;
int out[i][i];
int count = 1;
int m = i/2 1 ;
int xyv = 0;
int n = 0;
int icount = 1;
while(icount != m ){
for (int j= xyv ; j <= i - icount ; j)
{
out[j][i - icount] = count;
count ;
}
for (int y = i - icount -1; y >= xyv ; --y)
{
out[i - icount][y] = count;
count ;
}
for (int x = i - icount -1; x >= xyv ; --x)
{
out[x][xyv] = count;
count ;
}
for (int ty = icount; ty <= i - icount -1; ty)
{
out[xyv][ty] = count;
count ;
}
icount ;
xyv ;
}
m--;
if(i%2==1)
out[m][m] = i*i;
for(int k0 = 0; k0 < i; k0)
{
for (int k1 = 0; k1 < i; k1)
{
printf("M", out[k0][k1]);
}
cout<<endl;
}
return 1;
}
思路:一个while一组四个箭头:
运行结果:
- 优质参考:https://blog.csdn.net/left_coast/article/details/52087136