分析:

本题与之前的打印金字塔类似
由于是倒着显示,这里与之前不同的是更改了循环的初值并自减,然后记录当前行需要打印的空格space自增即可。

题解:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n = 0;
    while(scanf("%d", &n) != EOF) {
        //scanf("%d", &n);
        int space = 0;
        for(int i = n; i > 0; --i) {
            for(int j = 0; j < space; ++j)
                printf(" ");
            int count = i+i-1;
            bool flag = true;
            for(int k = 0; k < count; ++k){
                if(flag) {
                    printf("*");
                    if(k == count-1)
                        printf(" ");
                }
                else
                    printf(" ");
                flag = !flag;
            }
            printf("\n");
            space++;
        }
    }
    return 0;
}

总结:

复杂图案的打印,根据类似题型进行修改即可,实现举一反三。