c++打印数字图案?

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

2021-11-17 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1610万
展开全部

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

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


代码如下:

#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;

}


结果截图:

赖马特22

2021-11-16 · TA获得超过1008个赞
知道答主
回答量:5802
采纳率:38%
帮助的人:189万
展开全部
:你好,就是用printf输出就行,注意要加空格,调整好形状
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友57f81b8a

2021-11-16 · TA获得超过161个赞
知道答主
回答量:1319
采纳率:7%
帮助的人:95.3万
展开全部
#include using namespace std;void main(){cout
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
煤炭蜜袋鼯70
2021-11-16 · 贡献了超过127个回答
知道答主
回答量:127
采纳率:0%
帮助的人:5万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欧阳肖阿哥
2021-11-16 · 贡献了超过1157个回答
知道答主
回答量:1157
采纳率:1%
帮助的人:46.1万
展开全部
数组型和整型是两个东西,不能相加。如果强行相加会引起未定义的行为。你要知道的是“不能这么做”,而不是“为什么会出现这样的错误结果”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式