读入一行有空格的字符(最多127个字符),统计并分别显示26个英文字母(不区分大小写)出现的次数
#include <stdio.h>
void Letter(char str[], int num[]); //对字符数组str进行字母计数,并存入num数组
/* 读入一行有空格的字符(最多127),并统计分别显示26个英文字母出现的次数(不区分大小写) */
int main(void)
{
int i, num[26] = {0};
char c1, c2, str[128] = {'\0'};
printf("请输入一行字符:");
gets(str);
Letter(str, num);
printf("输出统计结果为:\n");
for ( i = 0; i < 26; i++ )
{
if ( num[i] != 0 )
{
c1 = 'A' + i; //所对应的大写字母
c2 = 'a' + i; //所对应的小写字母
printf("%c%c-%d\n", c1, c2, num[i]);
}
}
return 0;
}
void Letter(char str[], int num[])
{
int i, j;
for ( i = 0; str[i] != '\0'; i++ )
{
if ( str[i] >= 'A' && str[i] <= 'Z' )
{
j = str[i] - 'A'; //j是该字母在26个字母中所排列的位置
num[j]++; //说明找到了该位置的字母,记录+1
}
else if ( str[i] >= 'a' && str[i] <= 'z' )
{
j = str[i] - 'a';
num[j]++;
}
}
}
运行结果如下: