ZZULIOJ 2844: 圣诞树(^-^)V

题目描述

万圣节刚过去没见天,转眼间就快要圣诞节了。雀氏呀,快乐的时间总是短暂的,zyz 学长每天沉浸在快乐的刷题当中时,总是抱怨时间就像开了三倍速一样。学长为了让时间流逝地慢一点,所以学长决定在圣诞节当天种一棵“圣诞树”来陪伴自己一起度过这段快乐的时光。但是学长还没有挑选出来,作为迷人的zyz学长忠实粉丝的你知道这个消息后,肯定不会错过这个机会来表达自己对学长的崇拜与迷恋。所以你决定设计一棵“圣诞树”,来送给学长,以表自对zyz学长的崇拜与迷恋。下面是你设计好的“圣诞树”。

        圣诞树分为五部分,从第一部分到第三部分,每部分的宽度分别为 r, r + d, r + 2 * d, 然后第四部分为树干,第五部分为土壤。然后给出“树干”的宽度和高度r1,h1和土壤”的宽度和高度r2,h2。(保证r1,r2都为奇数)。设计程序输出对应大小的圣诞树。

输入
第一行输入题目所描述的r和d,数据之间以空格相隔。
第二行输入r1,h1,r2和h2,数据之间以空格相隔。

3<= r <= 11 && r为奇数                      0<= d <= 10 && d为偶数

1 <= r1 <= 11 && r1为奇数                  5 <= h1 <= 50

12 <= r2 <= 49 && r2为奇数                1 <= h2 <= 10

r1 < r2

输出
请打印上述“圣诞树”
样例输入 Copy

3 5 9 2
样例输出 Copy
    *
   ***
  *****
    *
   ***
  *****
 *******
    *
   ***
  *****
 *******
*********
   ***
   ***
   ***
   ***
   ***
*********
*********
来源/分类
题目要分类讨论 刚开始没有发现 还是不够细啊 :(
#include<stdio.h>
void pr(int n)//定义*函数
{
	int i;
	for(i=1;i<=n;i++)
	{
		printf("*");
	}	
	printf("\n");
	
}


void blank(int n)//定义空格函数 
{
	int i;
	for(i=1;i<=n;i++)
	{
		printf(" ");
	}
	
}

int main()
{
	int r,d,r1,h1,r2,h2,i,n,x,j,k;
	scanf("%d %d",&r,&d);
	scanf("%d %d %d %d",&r1,&h1,&r2,&h2);
	if(r2>=r+2*d)
	{
	n=r/2+1;
	for(i=1;i<=3;i++)
	{
		x=1;
		k=r2/2;
		for(j=1;j<=n;j++)
		{
			blank(k);
			pr(x);
			x=x+2; 
			k--;
		}
		n=n+d/2;
	}
	k=r2/2;
	x=r1/2;
	for(i=0;i<h1;i++)
	{
		blank(k-x);
		pr(r1);
	}
	x=r2/2;
    for(i=1;i<=h2;i++)
    {
       blank(k-x);
       pr(r2);
    }
    }
    
    //分类讨论 !!
    else if(r2<r+2*d)
    {
    n=r/2+1;
	for(i=1;i<=3;i++)
	{
		x=1;
		k=(r+2*d)/2;
		for(j=1;j<=n;j++)
		{
			blank(k);
			pr(x);
			x=x+2; 
			k--;
		}
		n=n+d/2;
	}
	k=(r+2*d)/2;
	x=r1/2;
	for(i=0;i<h1;i++)
	{
		blank(k-x);
		pr(r1);
	}
	x=r2/2;
    for(i=1;i<=h2;i++)
    {
       blank(k-x);
       pr(r2);
    }
    }
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值