Chinaunix首页 | 论坛 | 博客
  • 博客访问: 688449
  • 博文数量: 156
  • 博客积分: 3402
  • 博客等级: 中校
  • 技术积分: 1639
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-13 14:06
个人简介

业余编程爱好者

文章分类

全部博文(156)

文章存档

2014年(1)

2013年(13)

2012年(46)

2011年(38)

2010年(58)

分类: LINUX

2012-04-11 14:45:30

    有时看似很简单的问题,但仔细一想,还是要花点脑筋才能解决的。正如以下这道题:
    打印一个柱形图,要竖着的。
这题是K&R上面第一章的一道练习题。我一直没想真正的把它做出来,因为太简单了。用星号表示一个条状图就行了,横着打印出来是非常简单。但这道题要竖着打印出来。今天好好的想了下,还是用了最笨的方法,用个二维数组,往里面填入*号,并最后打印出这个数组。哪位有更好更省力的方法,可以跟我交流下。代码如下:
 
print_histogram.c

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. char histogram[20][20];

  3. int main ()
  4. {
  5.     int num[3] = {1,5,9};
  6.     int high[3] = {10,4,16};
  7.     int i,j,n;
  8.     
  9.     /*初始化柱状图数组*/
  10.     for(i=0; i<20; i++)
  11.         for(j=0;j<20;j++)
  12.             histogram[i][j] = ' ';
  13.     
  14.     /*处理num参数数组和high参数数组,在柱状图数组相应的位置填入星号*/
  15.     for(n=0; n<3; n++){
  16.         i = num[n];
  17.         j = 20 - high[n];
  18.         fill_in_star(i, j);
  19.     }
  20.     
  21.     /*打印出柱状图*/
  22.     for(j=0; j<20; j++) {
  23.         for(i=0; i<20; i++)
  24.             printf("%c",histogram[i][j]);
  25.         printf("\n");
  26.     }
  27.         
  28.     return 0;
  29. }

  30. /*根据num参数和high参数,在柱状图数组相应的位置填入星号*/
  31. int fill_in_star(int num, int high)
  32. {
  33.     for(; high<20; high++)
  34.         histogram[num][high] = '*';
  35.     return 0;
  36. }

阅读(1013) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~