/*
从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间由若干个空格隔开,英文单词由大小写字母组成,编程完成下列任务:
统计并输出此句子中英文字母的个数。
统计并输出此句子中单词的个数。
查找句子中出现次数最多的字母(不区分大小写)和次数,当出现最多的字符不止一个时,都能找到,并输出找到的所有字母及次数。(输出时大小写字母均可)
例如,输入句子:This Is An Pencil Case,则输出为:
字母个数:18
单词个数:5
最多的字母:i,s
出现的次数:3
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
char line[100];
gets(line);
int i;
int letternum=0,wordnum=0,ascii[128]= {0};
for(i=0; i<strlen(line); i++)
{
if(line[i]!=' ')letternum++;
if(line[i]!=' '&&line[i+1]==' ')wordnum++;//记得排除连续多个空格的情况
ascii[line[i]]++;
}
if(line[strlen(line)-1]!=' ')wordnum++;//判断最后一个字符是否是空格,如果是的话字母数就不能加一
printf("字母个数:%d\n",letternum);
printf("单词个数:%d\n",wordnum);
int max = 0;
for(i = 65; i < 91; i++)
{
if(max < ascii[i] + ascii[i+32])
max = ascii[i] + ascii[i+32];
}
printf("最多的字母:");
int flag = 0;
for(i = 65; i < 91; i++)
{
if(max == ascii[i] + ascii[i+32])
if(flag)
printf(",%c", i);
else
{
printf("%c", i);
flag = 1;
}
}
printf("\n出现的次数:%d\n", max);
}
运行结果: