程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 出現頻率-一道C語言編程題,本人初學者,求大神解答

出現頻率-一道C語言編程題,本人初學者,求大神解答

編輯:編程綜合問答
一道C語言編程題,本人初學者,求大神解答

編寫程序實現功能:數據文件story.txt是一篇英文小故事,請先統計其中26個字母的出現次數。
要求一:再根據用戶要求,輸出某個字母的出現次數,直到用戶輸入#為止。
要求二:請輸出出現頻率最高的三個字母和它們的出現次數。

最佳回答:


#include
#include
#include
int main()
{
int alpha[26]={0}; //用於計數26個字母出現的次數
FILE *text; //FILE 指針
char ch;

if((text=fopen("Story.txt","r"))== NULL){
    printf("File open error!");
    exit(0);
}//如果沒有文件則提示錯誤

while((ch=fgetc(text))!=EOF){
    ch = tolower(ch);
    if(ch>='a'&&ch<='z'){
        alpha[ch-'a']++;
    }
}//將每個字母出現的次數存放到lpha數組中
fclose(text);

int isSelected[26] ={0};//用於標記是否已經被選為前三個
int i;
int FIndex=0,SIndex=0,TIndex=0;//分別記錄前三個字母的下標
int MaxNum = 0;
for(i=0;i<26;i++){
    if(!isSelected[i]){
        if(alpha[i]>MaxNum){
            FIndex = i;
            MaxNum = alpha[i];
        }
    }
}
isSelected[FIndex] = 1; //在未被選擇的字母中比較出當前次數最多的,則為第一個

MaxNum = 0;
for(i=0;i<26;i++){
    if(!isSelected[i]){
        if(alpha[i]>MaxNum){
            SIndex = i;
            MaxNum = alpha[i];
        }
    }
}
isSelected[SIndex] = 1;//在未被選擇的字母中比較出當前次數最多的,則為第二個

MaxNum = 0;
for(i=0;i<26;i++){
    if(!isSelected[i]){
        if(alpha[i]>MaxNum){
            TIndex = i;
            MaxNum = alpha[i];
        }
    }
}
isSelected[TIndex] = 1;//在未被選擇的字母中比較出當前次數最多的,則為第三個

printf("前三個字母:%c %c %c\n出現的次數:%d %d %d\n\n",'a'+FIndex,'a'+SIndex,'a'+TIndex,
       alpha[FIndex],alpha[SIndex],alpha[TIndex]);

printf("Enter a Letter to check its count(end with input #):\n\n");
while((ch=getchar())!='#'){
    ch = tolower(ch);
    if(ch<'a'|| ch>'z')printf("Enter a letter !\n");
    else {
        printf("time(s):%d\n",alpha[ch-'a']);
    }
    getchar();
}//判斷是否為‘#’,如果不是則打印相應的次數

}


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