程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言:計算輸入字符個數及字母出現的頻率思路

c語言:計算輸入字符個數及字母出現的頻率思路

編輯:關於C語言

 

近日再看《c語言程序設計第二版》,做了一下上面的習題。

1.編寫程序,打印出輸入中單詞長度的直方圖。

2.編寫程序,打印出輸入中各個字符出現頻率的直方圖。

先來說第一題,沒輸入一個一個單詞後,你就要出入一個空格,接著輸入一個單詞,在輸入一個空格,依此循環輸入。當一個句子輸入完了,就需要隔行另起一段。

例:

i am a studen

第1個單詞長度為1

第2個單詞長度為2

第3個單詞長度為1

第4個單詞長度為6

但是,當每輸入完一個單詞的時候需要用空格隔開,然後在輸入,編寫的過程,要判斷,詳情看代碼。

通過維基百科查詢,目前最長單詞的長度為30,有個很長的大概是225多個字母,不過我向我們一般也用不著它。

將最長字母長度MAXWORD設置為30,如果你喜歡你可以設置成任意長度

建立單詞長度數組word length,簡稱為wl[].

數組最大為wl[MAXWORLD]

將單詞長度數組中的值全部值為0

int i;

 

for(i = 1; i <= MAXWORD; i++)

 

  wl[i] = 0;

 

為什麼要這樣做?

我遇到這個題目的時候是這麼想的,每輸入一個單詞,將其長度放入數組中保存著。

於是,我就寫呀寫呀,寫了好長時間。

後來我就沒寫了,翻了下原來的筆記,看看了,原來可以這麼想,一下子事情變得簡單多了。

我將長度為1~30的字母,分別歸類長度為1的、長度為2、長度為3等等,然後將其放入數組,讓它們保存著。

例:

internet 這個單詞長度為8,我就將其放入數組wl[8],

如果還有相同長度放入wl[8]中,wl[8]的值就得+1啦。

所以該寫成++wl[8]。

現在思路明白了,我們可以這麼寫了。

#include <stdio.h>

 

#define MAXWORD 30   //單詞的最大長度

#define IN 1    //在單詞內,即沒有遇到空格

#define OUT 0   //在單詞外,即遇到了空格

 

/*word length ==> wl單詞長度簡稱*/

 

int wl()

{

    int c;

    int i;

    int nc;

    int state;    //state為單詞的狀態:IN或OUT;

    int overflow;   //操過MAXWORD的單詞個數

    int wl[MAXWORD];  //長度為1~30的的字符長度統計

 

    state = OUT;

    nc = 0;

    overflow = 0;

 

    for(i = 1; i < MAXWORD; ++i)

        wl[i] = 0;

 

    while((c = getchar()) != EOF)

        if(c == ' ' || c == '\n' || c == '\t')

        {

            state = OUT;

 

            if(nc > 0)

                if(nc < MAXWORD)

                    ++wl[nc];

                else

                    ++overflow;

            nc = 0;

        }

        else if(state == OUT)

        {

            state = IN;

            nc = 1;

        }

        else

            ++nc;

 

 

        for(i = 1; i < MAXWORD; ++i)

            printf("長度為:%d的單詞個數為:%d : \n\n", i, wl[i]);

 

            return 0;

}

main()

{

    wl();

}

不擅長寫作,文章僅供參考,如有錯誤請指正。

Have a nice day!!!

摘自 Aric小屋

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved