题目描述:
炎炎夏日,翟神最喜欢买一个火炬冰激凌解暑。现在让我们画出这个冰激凌。
给出冰激凌的层数,还有第一层的宽度和每层的高度,画出一个冰激凌。
1. 冰淇淋由头部和甜筒两个部分组成。
2. 注意每个冰激凌的头部都是由相同且固定的形状构成:
*
***
3. 冰激凌从头部往下开始计算层数。每一层都是高度相同的矩形,宽度逐层递增,且对于所有冰激凌,递增速度相同。
4. 在冰激凌下面,是甜筒部分,甜筒是空心的且最宽的部分和冰激凌头部最宽的部分相同。对于所有冰激凌,甜筒部分的切斜角度是一样的。
输入:
输入的三个数分别为冰激凌的层数,冰激凌第一层的宽度,以及冰激凌每层的高度。
输出:
画出的冰激凌。
参考显示的测试用例:
先画出冰激凌头部,然后是三层的矩形冰激凌,最后画出甜筒
测试用例:
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
代码实现:
#include<stdio.h>
int main()
{int n,w,h;
scanf("%d %d %d",&n,&w,&h);
int zw=w+4*(n-1);
int i,j;
for(i=1;i<3;i++)
{
for(j=1;j<=zw/2+i;j++)
{
if(j+i>zw/2+1&&j-i<=zw/2)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
for(i=1;i<=n;i++)
{
for(j=1;j<=zw/2+w/2+2*i-1;j++)
{
if(j+2*i>=1+2*n)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
for(j=1;j<=zw/2+w/2+2*i-1;j++)
{
if(j+2*i>=1+2*n)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
for(i=1;i<=zw/2+1;i++)
{
for(j=1;j<=zw-i+1;j++)
{
if(j==i||j==zw-i+1)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
return 0;
}