C语言 输入一个只由小写字母组成的字符串,长度小于100,数一数每个字母的个数

例如: aabbccddefx 那么输出a:2b:2c:2d:2e:1f:1x:1输入: 一个只有小写字母的字符串输出: 看例题

#include<stdio.h>
char charindex[26]={0};
int count[26]={0};
char a[101];

int main()
{
char c='\0';
int i=0,k=0, j=0,n=0;

printf("Enter no more than 100 lowwer characters \n");
gets(a);//读取一串字符。

for(i=0;i<min(strlen(a),100);i++)
{
if(a[i]<='z' &&a[i]>=a){
if(count[ [ a[i]-'a' ])==0)//第一次发现该字符
{
charindex[k++]=a[i];//插入字符索引表,字符索引计数加1

}
count[ a[i]-'a' ]++;//字符计数加1
}

for(i=0;i<k;i++)
{
c=charindex[i];//读出字符索引表的第i个字符
n=count[c-'a']);//字符出现次数
if(c>='a' && c<='z' && n>=1) printf("%d:c%",n,c);
}
printf("\n");
while(getchar()=="Q");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-26
#include <stdio.h>
void main()
{
char s[100];
int i;
int a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=0;
printf("enter a string:\n");
scanf("%s",s);
for(i=0;s[i]!=0;i++)
switch(s[i])
{
case'a';a++;break;/*后面的变量自己修改*/
case'b';b++;break;
case'c';c++;break;
case'd';a++;break;
case'e';a++;break;
case'f';a++;break;
case'g';a++;break;
case'h';a++;break;
case'i';a++;break;
case'j';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
case'a';a++;break;
}
printf("a:%d",a);/*这里自己加上,如果可以的话,告诉我!*/
第2个回答  推荐于2018-04-09
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num[200]={0};//主要用97~122
int i;
char c;
scanf("%c", &c);
while(c != '\n')
{
num[c]++;
scanf("%c", &c);
}
for(i=97;i<123;i++)
{
printf("%c:%d", i, num[i]);
}
return 0;
}追问

原谅我是菜鸟。。请问#include 在这段里面有什么用?
还有就是这段代码把单词数为0的也输出出来了。。不过这个我会改。。

追答

对 。这个题本来是相应来说的。题可能不一样,但大概是这个思想

追问

嗯嗯。。你这答案我一看就懂了。。而且很棒。。
我就是想知道如何实现a到z的循环。。。
我现在在纠结楼下的大神的。。。

本回答被提问者采纳
第3个回答  2012-12-26
void func(char* p_str)
{
char count[26]={'\0'};//int count[26]={0};
int i;
i = 0;
while(p_str[i])
count[p_str[i++] - 'a']++;
for(i=0;i<26;i++)
{
if(count[i]) printf("%c:%2d, ",'a'+i,count[i]);
}
}本回答被网友采纳