欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

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

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

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

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

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

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

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

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

通過上面的代碼將26個字母出現(xiàn)的頻率統(tǒng)計(jì)后(都存在數(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)計(jì)
   char c;
 
 /*將數(shù)組初始化,因?yàn)槲覀冞€沒有輸入嘛,所以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:

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

上一篇:C++實(shí)現(xiàn)合并排序的方法

欄    目:C語言

下一篇:詳解安卓系統(tǒng)中的Android.mk文件

本文標(biāo)題:統(tǒng)計(jì)輸入字符各個字母出現(xiàn)頻率的解題思路

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2924.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有