经典算法-梯形输出

这题还是挺就经典的,我的解决思路如下:
高度为H,则有H行需要打印,每行打印的内容大同小异,所以只需要H次循环就好了。大体框架就解决了,然后考虑细节。
第一行有H个星星
第二行有H+2个星星
第三行有H+4个星星
可知 第X行有H+(X-1)*2个星星
第H行有H+(H-1)*2个星星,也就是3H-2个星星。
然后输出不仅只有星星其实还有空格,那么就清晰了。
第X次循环,先打印3H-2-(H+2X-2)=2H-2X个空格,在打印H+(X-1)*2个星星就完事了。
#include <stdio.h>
int main ( ) {
int h = 0 ;
scanf ( "%d",& h) ;
for ( int i = 1 ; i <= h ; i++ ) {
for( int j = 2*h - 2*i ; j > 0 ; j -- ) {
printf(" ") ;
}
for( int j = h + 2 * i- 2 ; j > 0 ; j -- ) {
printf("*") ;
}
printf("\n") ;
}
return 0 ;
}
结果如下:
浙公网安备 33010602011771号