亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2022年07月20日 11:16:40   作者:fhefh  
這篇文章主要介紹了C語(yǔ)言統(tǒng)計(jì)輸入字符各個(gè)字母出現(xiàn)頻率的解題思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

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

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

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

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

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

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

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

由于要畫(huà)直方圖,所以用用到兩個(gè)for循環(huán)語(yǔ)句,通過(guò)觀察可以知道,直方圖的行數(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也知道了,來(lái)畫(huà)出直方圖吧:

/*打印直方圖*/
  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啦,還差一個(gè)橫坐標(biāo),不然我們咋知道每一列代表的是哪一個(gè)字母呢:

/*打印下標(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個(gè)字母出現(xiàn)字?jǐn)?shù)的統(tǒng)計(jì)
   char c;
 
 /*將數(shù)組初始化,因?yàn)槲覀冞€沒(méi)有輸入嘛,所以a~z都為0啦*/
   for( x= 0; x < 26; x++)
   {
     char_count[x] = 0;
   }
 
   while((c = getchar()) != EOF)
   {
     if(isalpha(c)) /*詳情見(jiàn)文末*/
     {
       c = tolower(c); //大寫(xiě)轉(zhuǎn)換為小寫(xiě)
       ++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ì)算輸入字符各個(gè)字母出現(xiàn)頻率的整體解題思路,希望對(duì)大家的學(xué)習(xí)有所幫助。

  • C++ sort排序之降序、升序使用總結(jié)

    C++ sort排序之降序、升序使用總結(jié)

    這篇文章主要介紹了C++ sort 排序(降序、升序)使用總結(jié),需要的朋友可以參考下
    2020-11-11
  • C++ Coroutine簡(jiǎn)單學(xué)習(xí)教程

    C++ Coroutine簡(jiǎn)單學(xué)習(xí)教程

    這篇文章主要為大家詳細(xì)介紹了C++ Coroutine的簡(jiǎn)單學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C++IO流之fstream,?stringstream使用小結(jié)

    C++IO流之fstream,?stringstream使用小結(jié)

    C語(yǔ)言中常用的輸入輸出函數(shù)有如下幾種:前者是格式化標(biāo)準(zhǔn)輸入輸出,后者是格式化文件輸入輸出,最后是格式化字符串輸入輸出,這篇文章主要介紹了C++IO流:fstream,?stringstream總結(jié),需要的朋友可以參考下
    2022-04-04
  • C++實(shí)現(xiàn)的一個(gè)可以寫(xiě)遞歸lambda的Y函數(shù)

    C++實(shí)現(xiàn)的一個(gè)可以寫(xiě)遞歸lambda的Y函數(shù)

    這篇文章主要介紹了C++實(shí)現(xiàn)的一個(gè)可以寫(xiě)遞歸lambda的Y函數(shù),在Y函數(shù)的幫助,這個(gè)lambda表達(dá)是可以成功看到自己,然后遞歸調(diào)用的,需要的朋友可以參考下
    2014-07-07
  • VC++角色游戲中的人物初始化模塊代碼實(shí)例

    VC++角色游戲中的人物初始化模塊代碼實(shí)例

    這篇文章主要介紹了VC++角色游戲中的人物初始化模塊,對(duì)大家學(xué)習(xí)VC++有一定的幫助,需要的朋友可以參考下
    2014-08-08
  • C++輕量級(jí)界面開(kāi)發(fā)框架ImGUI介紹小結(jié)

    C++輕量級(jí)界面開(kāi)發(fā)框架ImGUI介紹小結(jié)

    如果從事過(guò)C++?Windows客戶端開(kāi)發(fā),大家對(duì)MFC、Qt、DuiLib等各種DirectUI應(yīng)該有了解,本篇給大家介紹一個(gè)超級(jí)輕量級(jí)的C++開(kāi)源跨平臺(tái)圖形界面框架ImGUI,感興趣的可以了解一下
    2021-11-11
  • C語(yǔ)言遞歸操作用法總結(jié)

    C語(yǔ)言遞歸操作用法總結(jié)

    這篇文章主要介紹了C語(yǔ)言遞歸操作用法,結(jié)合實(shí)例形式總結(jié)分析了C語(yǔ)言遞歸操作的原理、實(shí)現(xiàn)技巧與相關(guān)應(yīng)用,需要的朋友可以參考下
    2016-02-02
  • C++基于socket編程實(shí)現(xiàn)聊天室功能

    C++基于socket編程實(shí)現(xiàn)聊天室功能

    這篇文章主要介紹了C++基于socket編程實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 使用C語(yǔ)言實(shí)現(xiàn)12種排序方法

    使用C語(yǔ)言實(shí)現(xiàn)12種排序方法

    這篇文章主要介紹了用C語(yǔ)言完整實(shí)現(xiàn)12種排序方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 最新評(píng)論