0
我已經設法從我的輸入中獲取字母的頻率。我還發現了最大的發生字符。但我不知道如何打印實際的字符。現在我的程序顯示A-Z並顯示每個字母的出現次數。我希望能夠在下一行打印出發生的最大字母以及發生的次數。計算字符的出現並將其打印出來
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 200
int readLine(char string[]);
void find_frequency(char string[], int count[]);
int maxArray(int a[]);
int main(void)
{
char array[MAX];
int freq[MAX];
int nrOfChar;
int i;
char c;
int max;
printf("Command Line Tool\n");
printf("Please enter text here: ");
nrOfChar = readLine(array);
for(c = 'A'; c<= 'Z'; c++)
{
printf("%c ", c);
}
find_frequency(array, freq);
printf("\n");
for(i=0;i<26;i++)
{
printf("%d ", freq[i]);
}
printf("\n");
max=maxArray(freq);
printf("Print letter and how many occurrence.\n");
printf("Finished excuting.\n");
return 0;
}
int readLine(char string[])
{
int ch;
int i=0;
while (isspace(ch = getchar()))
;
while (ch != '\n' && ch != EOF)
{
if (i < MAX)
{
string[i++] = ch;
ch = getchar();
}
}
string[i] = '\0';
return i;
}
void find_frequency(char string[], int count[])
{
int i;
for(i = 0; string[i] != '\0'; i++)
{
if (string[i] >= 'A' && string[i] <= 'Z')
{
count[string[i]-'A']++;
}
}
}
int maxArray(int a[])
{
int i, max=0;
for (i=0; i<26; i++)
{
if (a[i]>max)
{
max=a[i];
}
}
return max;
}
獲取'maxArray'將'i'替換爲'max'而不是'max'本身。 – kaylum
從'maxArray()'返回'i'而不是'a [i]'。然後頻率是'freq [i]',人物是'i +'A''。 – Barmar
'string [i] ='\ 0';'是'i == MAX'的問題。 (寫入數組邊界外) – chux