c语言任意输入一个字符串,统计每个小写字母出现的次数并输出

c语言任意输入一个字符串,统计每个小写字母出现的次数并输出

#include<stdio.h>

#include<string.h>

#define m 100005

int main()

{

char a[26];

int b[26];

char str[m];

int i,j;

for(i=0;i<26;i++)

a<i>=(char)(97+i);

while((gets(str)))

{

for(i=0;i<26;i++)

b<i>=0;

for(i=0;i<=m;i++)

{

if(str<i>==’\0’)

break;

else

for(j=0;j<26;j++)

if(str<i>==a[j])

b[j]++;

}

for(i=0;i<26;i++)

printf("%c:%d\n",a<i>,b<i>);

printf("\n");

}

return 0;

}

扩展资料:

while循环的格式:while(表达式){语句;}

while循环的执行顺序:当表达式为真,则执行下面的语句,语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句,然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

三、利用标识来控制while语句的结束时间。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-17
#include<stdio.h>
int main()
{char s[300];
 int i,a[26]={0};
 gets(s);
 for(i=0;s[i];i++)
   if(s[i]>='a'&&s[i]<='z')i
     a[s[i]-'a']++;
 for(i=0;i<26;i++)
   if(a[i])printf("%c:%d\n",'a'+i,a[i]);    
 return 0;
}

追答

本回答被网友采纳
第2个回答  2018-05-17
int *LetterCount(const char *s)
{
    int *num = (int*)malloc(sizeof(int)*26);
    char ch;
    
    memset(num, 0, sizeof(int)*26);   
    while( (ch=*s++) != '\0')
    {
        if( ch>='a' && ch<='z') 
            ++num[ch-'a'];
    }
    return num;
}

相似回答