如果只是需要打印出这个图形,最简单的直接用打印语句把所有的空格和数字打印出来即可。如果想更方便点,就用几个for循环依次来打印前面的空格,数字,以及数字之间的空格即可。下面是一个简单的实现,供参考:
#include <stdio.h>
int main(void){
for(int i=1,j=8;i<=8;i++,j-=2){ //i控制打印到数字5,j控制每个数字前打印几个空格
for(int k=0;k<j;k++){ //打印每行数字前的空格
printf(" ");
}
for(int p=0;p<i;p++){ //打印每行数字及其中间的空格
if(p<i-1){ //如果没有到每行数字最后一个数字,则打印数字及后面的三个空格
printf("%d ",i);
}else{ //如果到了打印每行最后一个数字,则只打印数字,后面的三个空格不打印了
printf("%d",i);
}
}
printf("\n"); //打印每行数字后面的换行
}
}
供参考:
#include<stdio.h>
int main()
{
int n, i, j;
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < 2 * (n - i - 1); j++)
printf(" ");
for (j = 0; j < 4 * i + 1; j++)
printf(j % 4 == 0 ? "%d" : " ", i + 1);
for (j = 0; j < 2 * (n - i - 1); j++)
printf(" ");
printf("\n");
}
return 0;
}