题目描述
学校准备在颁奖会把这次比赛的前10名的成绩用图形表示出来。小C记得去年是用一个直方图的形式表示的,就是以输入的次序把每个成绩的分数作为高,画一个宽度为20的矩形。 假如输入的10个成绩是:100 90 70 60 80 95 120 105 95 71 ,绘制的图形如下。
这个图形是做在一个展板上的,经过一年的风吹雨淋,展板上的线条都褪色了,只能看出展板的轮廓。请你使用GoC编程,画出展板的轮廓。具体形状参见输入输出样例。
输入格式
一行10个空格分隔开的正整数:分别表示10名同学的比赛成绩。
输出格式
相应的展板轮廓。
输入/输出例子1
输入:
100 90 70 60 80 95 120 105 95 71
输出:
输入/输出例子2
输入:
50 30 20 90 80 100 60 70 110 120
输出:
解题思路
用a[i]来代表第i个矩形的高,如果a[i]>a[i-1](比上一个矩形要高),pen向上画a[i]-a[i-1]的长度,
如果a[i]<a[i-1](比上一个矩形要矮),pen向下画a[i-1]-a[i]的长度。
参考答案
int main() { pen.speed(10).moveTo(-300,0).rt(90).hide(); int a[11]; a[0]=0; //把a[0]赋0,防止程序运行时发生错误 for(int i=1;i<=10;i++) { cin>>a[i]; } for(int i=1;i<=10;i++) { if(a[i]>a[i-1])//比上一个矩形高 { pen.lt(90).fd(a[i]-a[i-1]).rt(90); } else//比上一个矩形矮或等于上一个矩形 { pen.rt(90).fd(a[i-1]-a[i]).lt(90); } pen.fd(20); } pen.rt(90).fd(a[10]).rt(90).fd(200); return 0; }