Q_A_Qwu 2021-04-28 17:43 采纳率: 100%
浏览 695
已采纳

蛇形数字三角形怎么做?c++

题目描述

输入一个正整数N,输出N行的蛇形数字三角形(具体看样例)。

输入

一行一个正整数,3 ≤ N ≤ 30.

输出

N行,第一行N个数,第二行N - 1个数,……第N行一个数。每个数占5列。

样例输入

9

样例输出

    1    2    4    7   11   16   22   29   37
    3    5    8   12   17   23   30   38
    6    9   13   18   24   31   39
   10   14   19   25   32   40
   15   20   26   33   41
   21   27   34   42
   28   35   43
   36   44
   45
  • 写回答

7条回答 默认 最新

  • CSDN专家-黄老师 2021-04-28 17:47
    关注
    #include <stdio.h>
    #include <stdbool.h>
    int cnt = 0;
    int a[26][50];
    int n;
    
    void f(int top, int bottom)
    {
    	int i, j;
    	if(top<(n+1)/4)
    		return;
    	for(j=n-bottom+1; j<bottom; ++j)
    		a[top][j] = ++cnt;
    	for(i=top; i>(1+n)/2-top+1; --i, --j)
    		a[i][j] = ++cnt;
    	if(j==(n+1)/2)
    	{
    		bool go = true;
    		while(i<top)
    		{
    			a[i][j] = ++cnt;
    			++i;
    			--j;
    			go = false;
    		}
    		if(go)
    			a[i][j] = ++cnt;
    		go = true;
    	}
    	f(top-1, bottom-2);
    	return;
    }
    
    int main(void)
    {	
    	int top, bottom, i, j;
    	for(i=0; i<26; ++i)
    		for(j=0; j<50; ++j)
    			a[i][j] = 0;
    	scanf("%d", &n);
    	bottom = n;
    	top = (1 + bottom) / 2;
    	f(top, bottom);
    	for(i=1; i<=(n+1)/2; ++i)
    	{
    		for(j=1; j<=n; ++j)
    		{
    			if(a[i][j]==0)
    				printf("    ");
    			else
    				printf("%4d", a[i][j]);
    		}
    		putchar('\n');
    	}
    	return 0;
    }
    
    
    

    可以参数一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。