a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

統(tǒng)計輸入字符各個字母出現(xiàn)頻率的解題思路

2020-01-26 15:00:01
字體:
供稿:網(wǎng)友

本文跟大家分享的是編寫一個程序,能夠計算輸入字符各個字母出現(xiàn)的頻率,具體如下

 先跟大家展示一下最終結(jié)果:

剛剛接手題目的時候,我想得很復(fù)雜,因為26個字母中有大小寫嘛,小寫a~z,大寫A~Z

但是,無論是大寫還是小寫,字母都只有26個,在此,當(dāng)輸入大寫字母的時候,我們就將其轉(zhuǎn)換為小寫就ok啦

大寫字母轉(zhuǎn)換為小寫字母,有個很方便的函數(shù)tolow(),在ctype.h中,詳情文章末。

看過前一篇文章《c語言:計算輸入字符個數(shù)》中使用數(shù)組統(tǒng)計單詞長度的方法,在統(tǒng)計字母的個數(shù)的時候,依舊可以,只不過有些"小技巧"。

大小寫轉(zhuǎn)換與計算

if(isalpha(c)) /*詳情見文末*/{c = tolower(c); //大寫轉(zhuǎn)換為小寫++char_count[c-'a'];}

通過上面的代碼將26個字母出現(xiàn)的頻率統(tǒng)計后(都存在數(shù)組中),再來打印直方圖,何為直方圖,就是那張圖拉,向上看。

由于要畫直方圖,所以用用到兩個for循環(huán)語句,通過觀察可以知道,直方圖的行數(shù)由max決定。

max如何求呢,看如下代碼:

max = 0;  //初始化/*找出出現(xiàn)頻率最高的字母*/  for(x = 0; x < 26; x++)  {    if(char_count[x] > max)    {      max = char_count[x];      printf("max is %d", max);    }  }

現(xiàn)在max也知道了,來畫出直方圖吧:

/*打印直方圖*/  for(; max > 0; max--)  {    for(x = 0; x < 26; x++)    {      if(char_count[x] >= max)      {        putchar('x');      }      else        putchar('');    }    putchar('/n');  }

現(xiàn)在一切都o(jì)k啦,還差一個橫坐標(biāo),不然我們咋知道每一列代表的是哪一個字母呢:

/*打印下標(biāo),即abcdefghijklml....*/  for(x = 0; x < 26; x++)  {    putchar('a'+x);  }

完整代碼:

#include <stdio.h> #include <ctype.h> main() {   int x; //數(shù)組下標(biāo)變量,詳情看代碼   int max;  //出現(xiàn)頻率最高的字母   int char_count[26]; //26個字母出現(xiàn)字?jǐn)?shù)的統(tǒng)計   char c;  /*將數(shù)組初始化,因為我們還沒有輸入嘛,所以a~z都為0啦*/   for( x= 0; x < 26; x++)   {     char_count[x] = 0;   }    while((c = getchar()) != EOF)   {     if(isalpha(c)) /*詳情見文末*/     {       c = tolower(c); //大寫轉(zhuǎn)換為小寫       ++char_count[c-'a'];     }   }    max = 0;  //初始化  /*找出出現(xiàn)頻率最高的字母*/   for(x = 0; x < 26; x++)   {     if(char_count[x] > max)     {       max = char_count[x];       printf("max is %d", max);     }   }  /*打印直方圖*/   for(; max > 0; max--)   {     for(x = 0; x < 26; x++)     {       if(char_count[x] >= max)       {         putchar('x');       }       else         putchar('');     }     putchar('/n');   } /*打印下標(biāo),即abcdefghijklml....*/   for(x = 0; x < 26; x++)   {     putchar('a'+x);   }   return 0;   }

ps:

以上就是計算輸入字符各個字母出現(xiàn)頻率的整體解題思路,希望對大家的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 色婷婷综合久久久久中文一区二 | 综合一区二区三区 | 亚洲视频二| 亚洲乱码一区二区三区在线观看 | 操久久 | 亚洲国产精品久久久久秋霞蜜臀 | 91麻豆精品国产91久久久更新时间 | 国产精品一区二区久久久久 | 欧美精品久久久久久久监狱 | 亚洲自拍一区在线观看在线观看 | 欧美日韩精品亚洲 | 欧美国产日韩在线 | 欧美日韩中字 | 日韩欧美久久 | 欧美成人一区二区三区 | av毛片免费看 | 婷五月综合| 九九综合九九 | 免费福利电影 | 久久精品91久久久久久再现 | 欧美精品欧美精品系列 | 日韩欧美一级 | 亚洲视频免费在线观看 | 日韩国产精品一区二区三区 | 99在线国产 | 亚洲激情一区二区 | 亚洲一区免费 | 精品日韩一区二区三区 | www.久久爱.cn | 中文字幕一区在线 | 国产一区二区在线看 | 精品国产31久久久久久 | 欧美精品99 | 国产一级片免费观看 | 亚洲福利av | 日韩毛片免费视频一级特黄 | 另类免费视频 | 综合网亚洲 | 91亚洲精华国产精华精华液 | 国产综合精品 | 香蕉久久久 |