歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> 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 1

int 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 != '\t' && c != '\n'){
   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('\n');
  }
 }
}

Copyright © Linux教程網 All Rights Reserved