有时看似很简单的问题,但仔细一想,还是要花点脑筋才能解决的。正如以下这道题:
打印一个柱形图,要竖着的。
这题是K&R上面第一章的一道练习题。我一直没想真正的把它做出来,因为太简单了。用星号表示一个条状图就行了,横着打印出来是非常简单。但这道题要竖着打印出来。今天好好的想了下,还是用了最笨的方法,用个二维数组,往里面填入*号,并最后打印出这个数组。哪位有更好更省力的方法,可以跟我交流下。代码如下:
print_histogram.c
- #include <stdio.h>
- char histogram[20][20];
- int main ()
- {
- int num[3] = {1,5,9};
- int high[3] = {10,4,16};
- int i,j,n;
-
- /*初始化柱状图数组*/
- for(i=0; i<20; i++)
- for(j=0;j<20;j++)
- histogram[i][j] = ' ';
-
- /*处理num参数数组和high参数数组,在柱状图数组相应的位置填入星号*/
- for(n=0; n<3; n++){
- i = num[n];
- j = 20 - high[n];
- fill_in_star(i, j);
- }
-
- /*打印出柱状图*/
- for(j=0; j<20; j++) {
- for(i=0; i<20; i++)
- printf("%c",histogram[i][j]);
- printf("\n");
- }
-
- return 0;
- }
- /*根据num参数和high参数,在柱状图数组相应的位置填入星号*/
- int fill_in_star(int num, int high)
- {
- for(; high<20; high++)
- histogram[num][high] = '*';
- return 0;
- }
阅读(1013) | 评论(0) | 转发(0) |