金字塔图案

金字塔图案

http://www.nowcoder.com/questionTerminal/d84e8339f9444bb6b29bd3f227c8e538

分析:

对于本题而言,首先可以明确的是n代表需要输出多少行,对于第i行而言,首先需要输出n-i个空格,接着星号和空格交替打印,题解中先计算星号和空格的个数然后循环打印更改标志位flag,最后注意最后一个*后面需要加上空格和换行。

题解:

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

int main() {
    int n = 0;
    while(scanf("%d", &n) != EOF) {
        //scanf("%d", &n);
        int space = n - 1;
        for(int i = 1; i <= n; ++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;
}

总结:

复杂图案的打印,对于这类题可以逐行拆解,找出规律即可。

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务