输出数字三角形(金字塔)

请编写一个程序,输入首数字X和行数N,在屏幕上输出如下三角形:
                 5
              6  7  6
           7  8  9  8  7
        8  9 10 11 10  9  8
     9 10 11 12 13 12 11 10  9    输入的首数字:5,行数为:5
输入:行数 首数字
输出:数字三角形

思路:通过建立(i,j)坐标系,观察坐标系中的数字规律;

第一步应得到在何位置输出数字,即满足i+j>=n-1&&j-i<=n-1时输出数字;

第二步应得到输出什么数字,观察规律得到其与距中间列(n-1)距离有关,故定义绝对值计算

           计算完发现与每列中往下递增,得到加法结果输出。

#include<stdio.h>
#define jue(x,y) x>y?x-y:y-x
int main(){
	int x,n;
	scanf("%d %d",&n,&x);
	for(int i=0;i<n;i++){
		for(int j=0;j<2*n-1;j++){
			if(i+j>=n-1&&j-i<=n-1){
				printf("%3d",x+(jue(j,(n-1)))+2*(i-(jue(j,(n-1)))));
			}else if(i+j<n-1){
				printf("   ");
			}
		}
		printf("\n");
	}
	return 0;
}

编程新手,程序较为简陋,有不当之处欢迎指正!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值