C语言 输入一个字符串,统计各字母出现的次数,输出出现了4次的所有字母。 英文字母区分大小写。

输入一个字符串(不超过100个字符,允许带空格),统计各字母出现的次数,输出出现了4次的所有字母。 英文字母区分大小写。
测试输入:Please say hello to your parents, oh.
测试输出:
e
o

#include <stdio.h>
#include <malloc.h>
#include <string.h>
void init(int cASCII[52][2]);//初始化数组
int main()
{
    char str[]="Please say hello to your parents,oh.";
    int i,j,cASCII[52][2];
    init(cASCII);
    printf("输入:%s\n",str);//输入我就懒得手输了,直接初值,你要手输,加个scanf吧
    for(i=0;i<52;i++)
        for(j=0;j<strlen(str);j++)
        {
            if(cASCII[i][0]==str[j])
                cASCII[i][1]++;
        }
    for(i=0;i<52;i++)
        if(cASCII[i][1]==4)//出现4次的字母
            printf("%c\n",cASCII[i][0]);
    return 0;
}
void init(int cASCII[52][2])//初始化数组
{
    int asc,i;//cASCII存储大小写52个字母的ASCII码及出现次数
    //65~90对应大写字母A~Z
    asc=65;
    for(i=0;i<26;i++)
    {
        cASCII[i][0]=asc++;
        cASCII[i][1]=0;
    }
    //97~122对应大写字母a~z
    asc=97;
    for(;i<52;i++)
    {
        cASCII[i][0]=asc++;
        cASCII[i][1]=0;
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-21
char()
{char st[100],a='a',A='A',*s;
int c[26]={0},C[26]={0},i;
gets(st);
s=st;
while(*s)
{if(*s>=a&&*s<a+26)c[*s-a]++;
else if(*s>=A&&*s<A+26)c[*s-A]++;
s++;}
for(i=0;i<26;i++)
if(c[i]==4)printf("%c\n",a+i);
for(i=0;i<26;i++)
if(C[i]==4)printf("%c\n",A+i);}
有什么问题请留言。
相似回答