输入格式:5
输出格式:
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
解决代码如下:
#include<stdio.h>
int main(){
int x,i,j,k,l;
scanf("%d",&x);
for(i=0,l=0;i<x;x--,l++){
k=0;
for(k=0;k<2*l;k++){
printf(" ");
}
for(j=x;j>0;j--){
printf("%d ",j);
}
printf("\n");
}
return 0;
}
解决此问题,需要先明白此问题需要的规律。
输入数字是几,就会产生几行,第一行数字最多,每一行依次减少一个数字。
还需要保持最右边对齐,这是个比较复杂的规律。
此过程需要三个循环。
产生几行数字是一个循环。
数字从大到小依次递减是第二个循环。
保持最右边对齐是第三个循环。
保持最右边对齐,则需要用空格补齐消失的数字的空位,依次达到每一行都是相同的位置。
就好比,一个教室,有五排桌椅,每一排座位都相同
只不过,第一排坐五个人,第二排坐四个人,第三排坐三个人,第四排坐两个人,最后一排坐一个人。每一排的桌椅数是一样的,但是每一排坐的人数不一样,空的桌椅由空气来坐。这和空格补位是一个道理,