时限:5s 空间:256m 通过次数:827
题目描述
有一种智慧树,它是这样生长的,它先长出长度50的主干,才开始长侧枝,每长出一根侧枝,主干就向上长出长度30。如果侧枝长度是偶数,就向左45°方向生长;如果侧枝长度是奇数,就向右45°方向生长。并且,侧枝长度是5的倍数,这个侧枝顶端就会长出颜色是14、半径为10的圆形智慧果。
主干和侧枝颜色是10,主干size(12),侧枝size(8)。
输入格式
两行,第一行1个正整数n,(0<n<20);
第二行,n个正整数,表示n个侧枝的长度。
输出格式
相应生长的智慧树。
输入/输出例子1
输入:
5
82 105 50 61 36
输出:
输入/输出例子2
输入:
12
205 192 184 155 140 131 152 122 95 80 72 54
输出:
知识点
圆(20%), goc绘图命令(100%), 角度(20%), 整数(80%),
解题思路
这道题其实并不难。
代码框架:
1.画出主干
2.向左或向右画出分支(要用到if语句)
3.如果分支长度是五的倍数,画果子(也要用if语句)
4.继续向上画主干
参考答案
int main() { int n,a[21]; cin>>n; for(int i=1;i<=n;i++)//输入枝干长度 { cin>>a[i]; } pen.speed(10).c(10).size(12); pen.moveTo(0,-300);//把笔往下挪,避免树太高超出绘图区 pen.fd(50);//画主干 for(int i=1;i<=n;i++) { if(a[i]%2==0)pen.lt(45);//分支长度是偶数,向左 else pen.rt(45);//分支长度是奇数,向右 pen.size(8).fd(a[i]);//画分支 if(a[i]%5==0) pen.oo(10,14);//如果分支长度为5的倍数,画果子 pen.bk(a[i]); if(a[i]%2==0)pen.rt(45); else pen.lt(45); pen.size(12).fd(30);//往上画长度为30的主干 } return 0; }
知识链接:数组
概念:数组是一组相同类型元素的集合(数组表示的是类型相同的一组数据)。
定义
·数据类型 数组名[数组大小];例:int a [10] ;
输入输出
用for循环一个一个输入输出//输入的例子 for(int i=1;i<=n;i++) { cin>>a[i]; } //输出的例子 for(int i=1;i<=n;i++) { cout<<a[i]; }
知识链接:if语句
if语句可以用来判断。
格式:
if( 判断条件 )
{
执行代码
}
如果这篇文章对你有帮助,点个赞吧。
需要不用数组的题解的小伙伴可以在评论区留言,博主有空回回复哦。