第10关 - 2017NH教师GoC编程能力测试

179.(2017教师GoC编程能力测试)第1题:三个方形(three)

题目描述

小P刚学会goc时最喜画正方形拼成的图形,请编程画出如下图形。

image.png

注意:上图的每个线段长度都是50。

题解

int a=50;  
void zfx()  
{  
    for(int i=0;i<4;i++)  
        p.fd(a).rt(90);  
}  
int main() {  
      
    p.rt(90); zfx();  
    p.rt(180); zfx();  
    p.bk(a).rt(90);  
    zfx();  
    return 0;  
 }  

180.(2017教师GoC编程能力测试)第2题 丰田(toyota)

题目描述

小P设计了如下图的“丰田”标识,请你帮忙使用GoC编程绘制。

image.png

注意:笔宽为4,颜色号为8。3个椭圆的参数分别是(120,60),(30,60)、(80,30)。

题解

int main() {  
    p.size(4).c(8).hide();  
    p.e(120,60).e(30,60);  
    p.up().fd(30).e(80,30);  
    return 0;  
 }  

181.(2017教师GoC编程能力测试)第3题:六边形(six)

题目描述

小P请你帮忙使用GoC编程绘制下面图形。

image.png

注意:上图的每个线段长度都是50。

题解

int main() {  
   for(int i=0;i<6;i++)  
   {  
       for(int i=0;i<3;i++)  
           p.fd(50).rt(120);  
       p.rt(60);  
   }  
    return 0;  
 }  

182.(2017教师GoC编程能力测试)第4题:风车(win)

题目描述

卡通风车可以简单的由一些长100宽50的矩形平分一周画出来,如下图是3个矩形的风车:

image.png

现在给你矩形的个数和颜色号,请画出相应的图形。

输入格式
一行:2个正整数n和a。

输出格式
相应的图形。

输入/输出例子1

输入:

20 3

输出:

image.png

输入/输出例子2

输入:

8 11

输出:

image.png

题解

int main() {  
    int n,c;  
    cin >>n>>c;  
    p.c(c);  
   for(int i=0;i<n;i++)  
   {  
       for(int i=0;i<2;i++)  
           p.fd(100).rt(90).fd(50).rt(90);  
       p.rt(360.0/n);  
   }      
    return 0;  
 }  

183.(2017教师GoC编程能力测试)第5题 三角形(tri)

题目描述

小Pen学会了第11课的使用循环变量可以画出多变的图形。 他模仿例题使用颜色号1、2、3画出了下面最大边长是120的图形:

image.png

不过小Pen希望自己键盘输入3个颜色,画出想要的图形。

输入格式
一行3个正整数a,b,c范围[0,15]。

输出格式
相应的图形。

输入/输出例子1

输入:

2 5 6

输出:

image.png

题解

int main() {  
    int a,b,c;  
    cin >>a>>b>>c;  
    p.speed(10).hide();  
   for(int i=0;i<=120;i++)  
   {  
       if (i%3==0) p.c(a);  
       else  if(i%3==1) p.c(b);  
       else p.c(c);  
       p.fd(i).rt(120);  
   }      
    return 0;  
 }  

184.(2017教师GoC编程能力测试)第6题:外接圆(cir)

题目描述

输入n个数,以这n个数画n个圆。这n个圆从左到右相邻,圆心在同一水平线上。例如:n=6, 输入的数是10 20 40 20 30 10,用这些数做半径画出的图如下:

image.png

不过小pen不满足这么简单,他决定还要加个外接圆!

输入格式
第一行,1个正整数n,范围在[1,10]。 第二行,n个正整数范围都在[2,100]。

输出格式
相应的图形。

输入/输出例子1

输入:

6

4 10 20 20 10 4

输出:

image.png

输入/输出例子2

输入:

3

40 20 30

输出:

image.png

题解

  
int main() {  
    int n,a,s;  
    s=0;  
    cin >> n;  
    p.up().rt(90).hide();  
    for (int i=0; i<n; i++)  
    {  
        cin >>a;  
        p.fd(a).o(a).fd(a);  
        s+=a;  
    }      
    p.bk(s).o(s);  
    return 0;  
 }  

185.(2017教师GoC编程能力测试)第7题:砖头(brick)

题目描述

小pen觉得画一个立体的砖块是研究3D作图的基本功。例如:

image.png

注意:上图的每条线段长度都是100,红色的数字表示这个角度是30,不用你画出。

输入格式
一行1个正整数a,范围都在[10,170],表示如图的那个红色位置的角度。

输出格式
相应的图形。

输入/输出例子1

输入:

60

输出:

image.png

输入/输出例子2

输入:

135

输出:

image.png

题解

void lx(int x){  
    p.fd(100).rt(x).fd(100).rt(180-x);  
    p.fd(100).rt(x).fd(100).rt(180-x);  
}  
int main() {  
    int a;  
    cin >> a;  
    p.rt(180);  
    lx(90);  
    p.rt(90);  
    lx(180-a);  
    p.rt(180-a);  
    if (a>90)   
        p.moveTo(-100,0);  
    lx(90+a);  
    p.hide();      
    return 0;  
 }  

186.(2017教师GoC编程能力测试)第8题:圆饼图(pie)

题目描述

小pen学习使用电子表格时对数据统计时的圆饼图很感兴趣,想用goc编程实现这个功能。例如有4个数:0 30 50 20,就用0号颜色画0%的扇形,用1号颜色画30%的扇形,用2号颜色画50%的扇形,用3号颜色画20%的扇形。结果如下:

image.png

注意:这个圆的半径为100,第1个数的扇形用0号颜色,第2个数的扇形用1号颜色,…,第n个数的扇形用n-1号颜色。

输入格式
第一行1个正整数n,范围在[2,15],表示数值个数。 第二行n个正整数,每个数范围在[2,100],表示数值。

输出格式
相应的表示百分比的圆饼图。

输入/输出例子1

输入:

5

6 2 3 5 9

输出:

image.png

输入/输出例子2

输入:

12

10 30 80 40 50 60 10 30 80 40 50 60

输出:

image.png

题解

int main() {  
    int n,a[20],s;  
    cin >> n;  
    p.speed(10);  
    for(int i=0; i<n; i++)  
    {  
        cin>>a[i];  
        s+=a[i];  
    }  
    for (int i=0; i<n; i++)  
    {  
        p.c(i);  
        for (int j=0; j<360.0*a[i]/s; j++)  
            p.fd(100).bk(100).rt(1);  
    }  
    p.hide();  
    return 0;  
 }