N-39. 没有圣诞树的圣诞夜

因为疫情,David没有出门购买圣诞节所需要的圣诞树,心里感觉空落落的。请你用程序给他绘制一个圣诞树,满足他的心愿。绘制规则如下:

1.输入的正整数n为总行数;

2.每三行一组,最后剩下的1~3行绘制树干,整体居中;

3.每一组(以第i组为例,i从1开始)第一行打印3个’’,第二行打印3+4i个’’,第三行打印3+8i个’*’;

4.树干的那几行每行3个’*’。

简单的图形打印问题,我们需要处理的点有:组数与树干行数, 如何居中。

#include <stdio.h>  
#include <string.h>  
int main () {  
    int n;  
    scanf("%d" , &n);  
    int p = n % 3 ? n / 3 : n / 3 - 1, q = n % 3 ? n % 3 : 3; // p组数,q树干行数 
    int max = 3 + 8 * p;  // 总长度
    for (int i = 1; i <= p; i++) {  
        for (int j = 1; j <= (max - 3) / 2; j++) printf(" ");  
        for (int j = 1; j <= 3; j++)printf("*");  
        printf("\n");  // 第一行
        for (int j = 1; j <= (max - 3 - 4 * i) / 2; j++) printf(" ");  
        for (int j = 1; j <= 3 + 4 * i; j++)printf("*");  
        printf("\n");  // 第二行
        for (int j = 1; j <= (max - 3 - 8 * i) / 2; j++) printf(" ");  
        for (int j = 1; j <= 3 + 8 * i; j++)printf("*");  
        printf("\n");  // 第三行
    }   
    for (int i = 1; i <= q; i++) {  
        for (int j = 1; j <= (max - 3) / 2; j++) printf(" ");  
        for (int j = 1; j <= 3; j++)printf("*");  
        printf("\n");  // 树干(和每组第一行一样)
    }  
    return 0;  
}  

本文作者:misasteria

本文链接:https://www.cnblogs.com/misasteria/p/16171392.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   misasteria  阅读(69)  评论(0编辑  收藏  举报
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起