跳转:牛客–圣诞树(2)
创新互联是一家专注于网站设计制作、成都网站建设与策划设计,大丰网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:大丰等地区。大丰做网站价格咨询:18980820575前言大家好,今天给大家介绍两种使用C语言描绘圣诞树的方法,希望可以让大家在圣诞节来临之际可以收获心仪对象的芳心。
一、题目描述:牧场大了,什么牛都有,今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他编写程序,实现妄想。
输入描述:
输入圣诞树的高度h,1<= h<= 100
输出描述:
输出对应的圣诞树
·由三个示例可以先将圣诞树初步划分为两部分–树枝 和 树干
·树枝:树枝左边是一系列递减的空格,而右边都是由最初的图形堆叠而成
首先设置开始时的空格,输入1时最多两个空格,输入每增大1,大空格数增加3,之后每行空格数减一
//输入 n
int sum = 3 * n - 1;//大空格数
将初阶图形看做整体则有第一层1个,第二层2个,第三层3个。。。
那么我们就要确立初阶图形如何设立然后在两阶以上的树枝中,不止由图,每个图中间还有一部分空格间隔,那么我们又该如何控制空格的输出呢?
如果大家仔细观察就会发现,图和空格的形状是相同的,只不过是倒立的,而且每一行图和空格的和都为6,那么我们就可以将*图和空格同时输出,如下:
printf("* ");
printf("* * ");
printf("* * * ");
现在有了图形,就要判断什么情况输出哪一行,以及要输出多少次,如下
//输入高度 n
int sum_z=3*n;//树枝总行数
for (int i = 1; i<= sum_z; i++)//树枝的行数
{int k = (i - 1) / 3 + 1;//图形输出次数
while (k--) { switch (i % 3) { case 1: printf("* "); break;
case 2: printf("* * "); break;
case 0: printf("* * * "); break;
}
}
printf("\n");
}
·树干:最后输出树干,输入多大数字就输出几行,这里要注意前面的空格,等于大空格数*
for (int i = 0; i< n; i++){for (int j = 0; j< sum; j++)
printf(" ");
printf("*\n");
}
四、全部代码:代码如下(示例):
#define _CRT_SECURE_NO_WARNINGS 1
#includeint main(){int n = 0;
scanf("%d", &n);
int sum_z = 3 * n;//树枝总行数
int sum = 3 * n - 1;//开始的空格大值
for (int i = 1; i<= sum_z; i++){//树枝的行数
//开始的空格
for (int r = 0; r<= sum - i; r++)
printf(" ");
int k = (i - 1) / 3 + 1;//图形输出次数
while (k--) { switch (i % 3) { case 1: printf("* "); break;
case 2: printf("* * "); break;
case 0: printf("* * * "); break;
}
}
printf("\n");
}
for (int i = 0; i< n; i++){for (int j = 0; j< sum; j++)
printf(" ");
printf("*\n");
}
return 0;
}
总结以上为牛客中初级圣诞树的描述,在下一篇博客中我会使用另一种方法介绍难度更大也更加漂亮的圣诞树,感谢大家的关注和支持。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧