请编写一个程序,输入首数字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;
}
编程新手,程序较为简陋,有不当之处欢迎指正!