C语言:求一道小题的算法~我想不出~

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:00:27
假如我输入aaabbccccc就能查出我输入的是三个a两个b五个c
这应该用什么算法呢?

建一个含26个元素的一维数组,数组的每一个成员对应26个英文字符中的一个字符的计数。
对用户输入进行遍历,并将上述一维数组的相应成员计数++。
用户输入完毕后,遍历数组,并输出不为0的成员。

程序如下:
#include<stdio.h>
#include<conio.h>

int main()
{
char count[26]={0};
char charin;
int i;

printf("请输入字符串,并以回车结束输入: \n");

do
{
charin = getche();

if((charin=='\n')||(charin=='\r')) break;
else if((charin>='a')||(charin<='z'))
count[charin-'a']++;
} while(1);

printf("\n统计结果为: \n");

for(i=0;i<26;i++)
{
if(count[i]!=0) printf("%c: %d\n",'a'+i,count[i]);
}

getch();
return 0;
}

运行结果:
请输入字符串,并以回车结束输入:
aaabbbccc3456cd
统计结果为:
a: 3
b: 3
c: 4
d: 1

用循环啊

用循环是肯定了,把这个字符串存入一个字符数组中,然后为每一个字符建立一个计数器,如果读到了a,那么counta++,读到了b,那么