问题:
设计一个单词和字符计数器并显示特定字符的直方图。
直方图可以使用任何字符来表示特定字母的单个实例,例如X
,并且应该在行尾打印该字母的实例数。仅打印在输入的句子中出现一次或多次的字符的结果。您的程序必须将相同字母的小写和大写视为单独的字符。
下面是一个直方图可能看起来像句子的例子:i_Looooove__eps_II
Word total: 4
Character total: 18
Character total omitting underscore: 14
e: XX (2)
i: X (1)
o: XXXXX (5)
p: X (1)
s: X (1)
v: X (1)
I: XX (2)
L: X (1)
_: XXXX (4)
这是我到目前为止所拥有的:
void histogram(char array3[]){
char alphabet[25] = {0};
int count;
char *locate;
int i;
int j;
for(i=0; array3[i] != '\0'; i++){
array3[i] = tolower(array3[i]);
}
count = 0;
for(i = 0; i <= 25; i++){
locate = &array3[i];
while(locate = strchr(locate, 'a' + i)){
++count;
locate++;
}
alphabet[i] = count;
}
printf("\nThe number of occurrences of each letter is: \n");
for(i = 0; i <= 25;i++){
printf("%c:%3d\n", 'a' + i, alphabet[i]);
}
return;
}
有些东西没有按我的预期工作:
直方图的输出是全1,而不是每个字符的出现次数。