下面是效果图。
我们先定义两个变量i,j来控制行和列,k用来控制后面的逐渐变小的数。
int i,j,k;
我们已知有四行,所以最外层设置循环四次。
for(i=1;i<=4;i++)
因为是三角状的所以前面的我们补足空格,而空格变化的是根据总行数减去我们的i变量的值而变化的。
for(j=1;j<=4-i;j++)
{
printf(" ");
}
而数字的变化可以从i与j的运算中找出规律,当我们内循环的j输出到外循环的i*2-1的一半时我们接下来的输出就要逐个递减了,这时我们把j当前的值赋给k,让k代替j输出,这时我们在设置一给while循环,输出完后直接用break结束当前的for循环。
for(j=1;j<=2*i-1;j++)
{
if(j>(2*i-1)/2)
{
k=j;
while(k)
{
printf("%d",k);
k--;
}
break;
}
else printf("%d",j);
}
下面是完整代码。
#include<stdio.h>
main()
{
int i,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
if(j>(2*i-1)/2)
{
k=j;
while(k)
{
printf("%d",k);
k--;
}
break;
}
else printf("%d",j);
}
printf("\n");
}