Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 打印单词长度的直方图--C语言的多种实现

题目要求该题摘自Kernighan的《C程序设计语言》第17页练习1-13。 下载见 http://www.linuxidc.com/Linux/2012-05/60076.htm编写一个程序,打印输入中单词长度的的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。经过这本C语言圣经第一章的调教,发现getchar()原来那么强大。多种实现方案一:声明state变量,用来记录程序当前是否正位于一个单词之中,这样便于理解。# include <stdio.h>
# define MAX 20
# define OUT 0
# define IN 1int main(void)
{
 int length[MAX];
 int c;
 int vocl;
 int state = OUT;
 int i;
 
 for(vocl = 0; vocl < MAX; vocl++){
  length[vocl] = 0;
 }
 while((c = getchar()) != EOF){
  if(c != " " && c != " " && c != " "){
   if(state == OUT){
    vocl = 1;
   } else{
    vocl++;
   }
   state = IN;
  } else{
   length[vocl]++;
   vocl = 0;
  }
 }
 for(vocl = 0; vocl < MAX; vocl++){
  if(length[vocl] != 0){
   printf("%2d  ", vocl);
   for(i = 1; i <= length[vocl]; i++){
    putchar("*");
   }
   putchar(" ");
  }
 }
}