第2关 - GoC模拟试题2

GoC测试模拟题(2017.3.23)第1题:领奖台

题目描述

小C同学在学校GoC编程比赛中获得了一等奖,他希望在领奖会上能站在一个漂亮的领奖台上。设计的领奖台如下图,请你帮忙使用GoC编程绘制。

141.png

说明: 上图中红色数字是标明尺寸的,不需要画出。 总宽180,上面3段每个宽60。 总高90,每个台阶高30。

输入格式

空。

输出格式

相应的领奖台图形。

int main(){
    p.speed(9).fd(30).rt(90).fd(60).lt(90).fd(30).rt(90).fd(60);
    p.lt(90).fd(30).rt(90).fd(60).lt(90).bk(90).lt(90).fd(180).hide();
    
    return 0;
}

GoC测试模拟题(2017.3.20)第2题:花朵

题目描述

看到你绘制的漂亮领奖台,小C觉得应该再摆放些有圆形花瓣的花朵更满意。小C设计了几种不同颜色、花瓣的半径和花瓣个数的“花朵”(见输入输出样例),但不确定哪种好看些。 为了研究什么颜色、花瓣半径、花瓣个数的花更好看,下C需要编制一个通用的程序:键盘输入颜色、半径和个数,就可以画出相应的花朵。 注意:每个花瓣的圆心到中点的距离是半径的3倍

输入格式

一行3个空格分隔开的正整数:分别表示颜色、半径和个数。

输出格式

相应的花朵图形。

输入/输出例子1

输入:

1 30 5

输出:

输入/输出例子2

输入:

3 30 8

输出:

输入/输出例子3

输入:

7 20 12

输出:

 

int main(){
    int c,a,n;
    cin>>c>>a>>n;
    p.c(c);
    for(int i=1;i<=n;i++){
        p.fd(3*a).oo(a).bk(3*a).rt(360.0/n);
    }
    
    return 0;
}

GoC测试模拟题(2017.3.20)第3题:拱桥

题目描述

小C的妹妹喜欢玩积木,现在有N根木头,宽度都是10,高度有各种各样的。比如,N=7,高度分别是10,20,40,20,30,30,40。如下图:

143-1.png

小C的妹妹的妹妹想用这些积木拼出一个拱桥,拱桥需要先不断上升再不断下降。上升时每次增加高度10,下降时每次减低高度10,并且上升和下降的个数要一样多(这样图形就左右对称,比较好看)。拼出的桥越长越好。比如使用上面提到的7个木头,可以拼出下面的拱桥:

143-2.png

这个问题比较难,她要求小C帮她架设一座最长的拱桥。 为了能画出不同形状的桥,聪明的小C决定用GoC编写个画拱桥的程序,从键盘读入N和每个木头的高度,然后画出相应的最长拱桥。

输入格式

第一行1正整数N:表示木头的个数,范围在[1..20]。 第二行,N个正整数(都是10的倍数),表示每个木头的长度,范围在[10..100]。

输出格式

相应的最长拱桥图形(注意,桥的中间2个木头高度一定相同)。 如果有多种答案,画出高度低的拱桥。

输入/输出例子1

输入:

7

30 40 40 50 30 40 40 

输出:

blob.png

输入/输出例子2

输入:

7

30 40 60 50 30 50 60

输出:

blob.png

输入/输出例子3

输入:

14

20 30 20 40  60 40 30 50 90 70 80 70 90 80

输出:

blob.png

int main(){
    int n,x,a[999];
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x;
        a[x/10]++;
    }
    int maxi,maxlen;
    maxlen=0;
    for(int i=1;i<=10;i++)
        if(a[i]>1){
          int len=1;
          for(int j=i+1;j<=10;j++){
              if(a[j]>1){
                  len++;
              }
              else{
                  break;
              }
          }
          if (len>maxlen){
              maxlen=len;
              maxi=i;
          }
    }
    p.speed(9).hide();
    for(int i=0;i<maxlen;i++){
        int h=(i+maxi)*10;
        p.fd(h).rt(90).fd(10).rt(90).fd(h).rt(90).fd(10).bk(10).rt(90);
    }
    for(int i=maxlen-1;i>=0;i--){
        int h=(i+maxi)*10;
        p.fd(h).rt(90).fd(10).rt(90).fd(h).rt(90).fd(10).bk(10).rt(90);
    }
    
    return 0;
}

GoC测试模拟题(2017.3.23)第4题:棋盘

题目描

小C同学喜欢下五子棋,在goc课上想画一个N*N的棋盘,每个小正方形的边长是M。例如:N=3,M=50时棋盘如下图:

144-1.png

输入格式

一行2个空格分隔开的正整数:分别表示棋盘的尺寸、小方格的边长。 N范围[1,10]。M范围[1,100]

输出格式

相应的棋盘。

输入/输出例子1

输入:

4 30

输出:

blob.png

输入/输出例子2

输入:

6 20

输出:

blob.png

int main(){
    int n,a;
    cin>>n>>a;
    p.speed(10).hide().moveTo(-380,300);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            p.fd(a).rt(90).fd(a).rt(90).fd(a).rt(90).rt(90);
        }
        p.lt(90).fd(a*n).rt(90).up().bk(a).down();
    }
    return 0;
}

GoC测试模拟题(2017.3.23)第5题:台阶

题目描述

小C的妹妹喜欢玩积木,现在有2根木头,宽度都是30,高度都不相同。比如高度分别是60, 40。如下图:

小C的妹妹的妹妹想用这些积木放在一起拼出一个台阶,台阶需要不断上升。上面2个积木可以拼成下面的图形:

输入格式

一行2个不同的正整数a,b:表示每个木头的高度,范围在[10..100]。

输出格式

相应的台阶图形。

输入/输出例子1

输入:

10 50

输出:

输入/输出例子2

输入:

70 40

输出:

blob.png

int main(){
    int a,b,tmp;
    cin>>a>>b;
    if(a>b){
        tmp=a;
        a=b;
        b=tmp;
    }
    p.speed(9).fd(a).rt(90).fd(30).rt(90).fd(a).rt(90).fd(30).rt(90);
    p.up().rt(90).fd(30).lt(90).down();
    p.fd(b).rt(90).fd(30).rt(90).fd(b).rt(90).fd(30);
    return 0;    
}

 GoC测试模拟题(2017.3.23)第6题:同心圆

题目描述

小C要画红绿黄3个不同半径的同心圆,要求红色(1号)的是最大半径圆,绿色(3号)的是第2大半径的圆,黄色(5号)的是最小半径的圆。但输入是的的3个数可能并没有从大到小。比如输入的3个半径分别是50,30,40:

146-1.png

这3个圆一定要按照正确的次序才能画出正确的图形。比如你最后画最大的圆形,就只能看见一个红色的大圆。 请你帮小C编程解决这个问题。

输入格式

一行3个不同的正整数a,b,c:表示每圆的半径,范围在[10..100]。

输出格式

相应的同心圆。

输入/输出例子1

输入:

50 30 40

输出:

blob.png

输入/输出例子2

输入:

40 70 10

输出:

blob.png

int main(){
    int a,b,c,t;
    cin>>a>>b>>c;
    if(a<b){
        t=a;
        a=b;
        b=t;
    }
    if(a<c){
        t=a;
        a=c;
        c=t;
    }
    if(b<c){
        t=b;
        b=c;
        c=t;
    }
    p.oo(a,1).oo(b,3).oo(c,5);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值