c++打印数字图案?

大于或等于3的奇数n由用户输入。 只需编写一个代码,打印一个与示例中相同模式的 n x n 数组。 例如) n = 5 这是一种从左上角开始,增加 1,到中间结束的模式。详细例子见图片

这是打印螺旋矩阵,一般的解决方法是这样的:

将矩阵生成到一个二维数组,然后打印出二维数组就行了。


代码如下:

#include<iostream>


using namespace std;


int main()

{

 int n;

 //x,y表示当前数组要赋值的位置

 int x = 0,y = -1;

 //每次赋值时,x和y的增量

 int x_add = 0, y_add = 1;

 //num:移动方向发生变化的转变点,num_add:每次转变时num的增量

 cin>>n;

int a[n][n];

 int num = n,num_add = n; 

 for(int i=1;i<=n*n;i++)

 {

  x += x_add;

  y += y_add;

  a[x][y] = i;

  

        //移动方向发生转变

  if(i == num) 

  {

            //横向变纵向

   if(y_add == 1 || y_add == -1) 

   {

    x_add = y_add;

    y_add = 0;

    num_add--;

    num += num_add;

   }

   else //纵向变横向

   {

    y_add = -x_add;

    x_add = 0;

    num += num_add;

   }

  }

 }

 for(int i=0;i<n;i++)

 {

  for(int j=0;j<n-1;j++)

  {

   cout<<a[i][j]<<" ";

  }

  cout<<a[i][n-1]<<endl;

 }

 return 0;

}


结果截图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-16
:你好,就是用printf输出就行,注意要加空格,调整好形状
第2个回答  2021-11-16
#include using namespace std;void main(){cout
第3个回答  2021-11-16
include usingnamespacestd; voidmain() { inti,j; for(i=1;i using namespace std; int main() { for(int i=1;i0;i--) { for(int j=i;j>0;j--) cout<<"*"; co
第4个回答  2021-11-16
数组型和整型是两个东西,不能相加。如果强行相加会引起未定义的行为。你要知道的是“不能这么做”,而不是“为什么会出现这样的错误结果”
相似回答