WebGoC题解(19) 12569.(2022GoC能力测试第5题)智慧树 难度:4

时限: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

输出:

智慧树1.jpg

输入/输出例子2

输入:

12

205 192 184 155 140 131 152 122 95 80 72 54

输出:

智慧树2.jpg

知识点

圆(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( 判断条件 )

{

        执行代码

}

如果这篇文章对你有帮助,点个赞吧。 

需要不用数组的题解的小伙伴可以在评论区留言,博主有空回回复哦。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值