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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步