当前位置: 首页 > news >正文

今天是圣诞节, 要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。

今天是圣诞节, 要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。

           *
          * *
         * * *
        *     *
       * *   * *
      * * * * * *
     *           *
    * *         * *
   * * *       * * *
  *     *     *     *
 * *   * *   * *   * *
* * * * * * * * * * * *
           *
           *
           *
 


#include <stdio.h>

int main() {
int i, j;
int k, h, n, z,s,m;
int rowbegin,rowend,rankbegin,rankend;

scanf("%d",&n);		//输入数值

int X = 3*(1<<n-1);
int Y = 5*(1<<n-1)+(1<<n-1)-1;

char b[X][Y];			//定义一个刚好可以存放图形的二维数组


for(i=0;i<X;i++)			//将数组初始化,全为空格
	{
	for(j=0;j<Y;j++)
		{

			b[i][j] = ' ';


		}

	}
for(i=0;i<3;i++)			//将输入为 1 时的图形存放到数组内
	{
		for(j=0;j<5;j++)
			{
				if((i==0 && j%2==0) || (i%2!=0 && j%2!=0) || i==j)
					{
						b[i][j] = '*';
					}
				else
					{
						b[i][j] = ' ';
					}

			}

	}

for(h=0,z=0,k=0,s=0,m=0;s<n+n-1;h++,z++,s++,k=0)	//控制循环的次数
{

	if (z>1)
		{
			z=0;
			h--;
			k=h;
			m=k;
		}

	rowbegin = (k>0)*3*(1<<k-1);		//控制行的开始数值
	rowend = 3*(1<<m);					//控制行的结束数值

	rankbegin = (h>0)*(5*(1<<(h-1))+(1<<(h-1)))-((k>0)<<k-1)*(3); //控制列的开始数值
	rankend = 5*(1<<h)+(1<<h)-1-((k>0)<<k-1)*(3);					//控制列的结束数值

	for(i=rowbegin;i<rowend;i++)
		{
			for(j=rankbegin;j<rankend;j++)
				{
					b[i][j] = b[i-rowbegin][j-rankbegin];
				}
		}
}


for(i=X-1;i>=0;i--)				//输出树叶
{
	for(j=Y-1;j>=0;j--)
		{
			printf("%c",b[i][j]);

		}

	putchar('\n');
}

for(i=0;i<n;i++)				//输出树干
{
	for(j=0;j<Y;j++)
		{
			printf("%c",b[X-1][j]);
		}

	putchar('\n');
}

return 0;
			  }

相关文章:

  • 同样是测试工程师,月薪8k的功能测试和月薪14k的自动化测试,差在了那里?
  • k8s 认证机制源码分析
  • Java-KoTime:接口耗时监测与邮件通知接口耗时情况
  • 【Linux】Linux系统编程(入门与系统编程)(一)(环境搭建、常见指令以及权限理解)
  • 【JavaScript高级】函数相关知识:函数、纯函数、柯里化、严格模式
  • Android多渠道之自定义apk输出
  • Day03 Css的学习深入 background-X属性
  • aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
  • 分享两款智慧物业系统源码,前后端分离,前端VUE,Uni-app框架
  • 新手看过来----讨厌的运算符
  • Matlab中importdata函数的使用
  • 4)自适应滤波(一)
  • Web前端期末大作业-重庆旅游景区网页设计(HTML+CSS+JS)
  • MySQL:复合查询和内外连接
  • 高亮蓝紫光油溶性ZnSe/ZnS量子点,PL波长390nm-440nm
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android框架之Volley
  • C++类中的特殊成员函数
  • CentOS 7 修改主机名
  • github指令
  • JavaScript中的对象个人分享
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Just for fun——迅速写完快速排序
  • Magento 1.x 中文订单打印乱码
  • Selenium实战教程系列(二)---元素定位
  • spring cloud gateway 源码解析(4)跨域问题处理
  • yii2中session跨域名的问题
  • 包装类对象
  • 从PHP迁移至Golang - 基础篇
  • 解决iview多表头动态更改列元素发生的错误
  • 蓝海存储开关机注意事项总结
  • 老板让我十分钟上手nx-admin
  • 如何用vue打造一个移动端音乐播放器
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信小程序实战练习(仿五洲到家微信版)
  • 学习ES6 变量的解构赋值
  • 应用生命周期终极 DevOps 工具包
  • AI算硅基生命吗,为什么?
  • 关于Android全面屏虚拟导航栏的适配总结
  • 交换综合实验一
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # Apache SeaTunnel 究竟是什么?
  • #QT项目实战(天气预报)
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • ( 10 )MySQL中的外键
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (四)JPA - JQPL 实现增删改查
  • (算法)Game
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core使用ef 6