圣诞树:
描述
今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。
输入描述:
输入圣诞树的高度h,1<= h <= 1001<=h<=100
输出描述:
输出对应的圣诞树
示例1
输入:
1
复制输出:
* * * * * * *
示例2
输入:
2
复制输出:
* * * * * * * * * * * * * * * * * * * *
示例3
输入:
3
复制输出:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
//printf(" * \n * * \n* * *"); // 模拟输入为1的状态 其他状态由此构成 //不太行 换行不知道怎么处理
for(int i=1;i<=3*n;i++) //圣诞树
{
int a=i%3;
int b=i/3;
for(int j=3*n-i;j>=1;j--)// 树两边的空格
printf(" ");
if(a==1)
{
for(int j=1;j<=b;j++)
printf("* ");
printf("*");
}
else if(a==2)
{
for(int j=1;j<=b;j++)
printf("* * ");
printf("* *");
}
else
{
for(int j=1;j<=b-1;j++)
printf("* * * ");
printf("* * *");
}
for(int j=3*n-i;j>=1;j--) // 树两边的空格 中间以“* ”打印 所以少一个空格
printf(" ");
printf("\n");
}
for(int j=n;j>=1;j--) //尾部
{
for(int i=3*n-1;i>=1;i--)
printf(" ");
printf("*\n");
}
return 0;
}
超级圣诞树:
描述
今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。
输入描述:
输入圣诞树的大小 nn
1≤n≤81≤n≤8
输出描述:
输出对应的圣诞树
示例1
输入:
1
复制输出:
* * * * * * *
示例2
输入:
2
复制输出:
* * * * * * * * * * * * * * * * * * * *
示例3
输入:
3
复制输出:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
示例4
输入:
4
复制输出:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//这道题有股递归地味道 每一级是它上一级的三个组成 但是递归怎么写呢?0_0
//参考题解可以用字符数组模拟递归
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,k;
int row=3;
int col=5;
char ch[400][800]={" * "," * * ","* * *"};
for( i=0;i<n-1;i++) // 上面的大三角部分递归次数 也就是复制的次数
{
for( j=0;j<row;j++)
{
for(k=0;k<col;k++)
{
ch[j+row][k]=ch[j][k]; // 左下角的图形复制
ch[j+row][k+1+col]=ch[j][k]; //右下角图形复制
}
}
for(j=0;j<row;j++) //清空原来的三角位置
{
for(k=0;k<col;k++)
{
ch[j][k]=' ';
}
}
for(j=0;j<row;j++) //将左下角的三角复制到两个中间去
{
for( k=0;k<col;k++)
{
ch[j][k+row]=ch[j+row][k];
}
}
row*=2; // 递归使用
col=col*2+1;
}
for( j=0;j<row;j++) //将左下角的三角复制到两个中间去
{
for(k=0;k<col;k++)
{
if(ch[j][k]=='*')
printf("%c",ch[j][k]);
else
printf(" ");
}
printf("\n");
}
for(j=0;j<n;j++) //打印树干
{
for( k=0;k<row-1;k++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}