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
数组型和整型是两个东西,不能相加。如果强行相加会引起未定义的行为。你要知道的是“不能这么做”,而不是“为什么会出现这样的错误结果”

c++打印数字图案?
这是打印螺旋矩阵,一般的解决方法是这样的:将矩阵生成到一个二维数组,然后打印出二维数组就行了。代码如下: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...

用C\/C++语言打印数字三角形
思路就是一行一行地打印,然后数清楚每一行要输出几个空格,还有数字。假设n是输入,也代表总行数;假设row是行号,取值为[1, n]总结三角形每一行的规律---对于每一行,输出分三大步:输出n - row个空格 输出 1 ~ row 输出 row-1 ~ 1 所以代码如下:include <iostream> using namespace std;in...

用C++编程序打印一个数字金字塔
void main(){ const int ta=9;int i,j,k;for(i=1;i<=ta;i++){ for(k=1;k<=ta-i;k++)printf(" ");for(j=1;j<=i;j++)printf("%d",j);for(j=i-1;j>0;j--)printf("%d",j);printf("\\n");} }

用c++或c打印数字三角形,从1开始输出,第i行输出i个数,每个数字按4个位 ...
include <stdio.h>main(){int i,j,n,t=1;printf("请输入n:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=0;j

c++中,这个程序为什么会输出如下结果。。那些9,8之类的数字从哪来的...
因为你用的是单引号,在输出时被cout解释成数字了,所以打印出来的是一串数字,不是你要的符号,把单引号换成双引号,以字符串形式输出。以上是推测的,手上没有电脑,你自己测试一下

用C++编程:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其...
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。三位的水仙花数共有4个:153,370,371,407;加一下就可以了,153+370+371+407=1301 你可以用程序来找到他们,比如用我会的pascal语言就是:program shuixianhuashu;var a,b,c:integer;begin for a:=1 ...

编写c++程序,输入n个数字,输出图形: 1 22 333 4444 55555……… nnnnn...
2个循环 解决 include <iostream> using namespace std;int main(){ int num;cout<<"请输入要循环的个数:";cin>>num;for(int i=1;i<=num;i++){ for (int j=0;j<i;j++){ cout<<i;} cout<<" ";} cout<<endl;system("pause");return 0;} ...

c++如何打出数字倒三角,在线等,急!
int main(){int h = 9;int s = 0;printf("%s ", "输入总行数:");scanf( "%d" , &h );printf("%s ", "输入起始数:");scanf( "%d" , &s );printf("\\n");for ( int i = h ; i >= 0 ; i-- ) {int l = s;for ( int j = i ; j > 0 ; j--...

用C++按顺序打印各位数字,如输入123,输出1,2,3
using namespace std;void main(){ int num,a[N],len;\/\/定义整数 char ch[N];\/\/字符数组,把整数转成字符串求整数长度 cin>>num;\/\/输入整数 itoa(num,ch,10);\/\/整数转换成字符串 len=strlen(ch);\/\/求出整数的长度 for (int i=len-1;i>=0;i--)\/\/依次求出整数各位上数,赋值给...

那个大的数字的方块应该怎么用C++代码打出来,求大神帮一下忙。谢谢...
方法一:第1步:单独插入钩√:word里点插入---特殊符号,---插入“√”;第2步:选中刚才插入的钩√;第3步:点格式---中文版式---,带圈字符---; 然后在圈号处点框框□,同时文字处点钩√---点确定,这样打钩的图标就出现了。当我们在样式上选择无、缩小文字、增大圈号时,出来的效果依次为...

相似回答
大家正在搜