任意长度的字符串,统计各字母个数
来源:百度文库 编辑:神马文学网 时间:2024/04/25 20:12:30
16. 从键盘输入任意长度的字符串,统计各字母个数
/*从键盘读入不超过SIZE个(SIZE是程序中定义的常量)
*的任意长度的字符串,要求分别统计出出现在该字符
*串中的各字母的个数(区分大小写)。
*/
#include
/*声明常量SIZE存储最大的字符串长度,值为127*/
#define SIZE 127
/*声明无返回值的函数void fuzhi(int[]),读取字符串*/
void fuzhi(int[]);
/*声明无返回值的函数void count(int[],char[]),统计
*字符串中各字母的个数
*/
void count(int[],char[]);
/*声明无返回值的函数void printresult(int[]),输出
*统计结果。
*/
void printresult(int[]);
/*声明一个全局变量*/
int a=1;
main()
{
char str[SIZE];
int letter[SIZE]={0};
printf("请输入长度不超过%d的任意字符串,以‘#’结束:\n",SIZE);
/*分别调用三个函数完成字符的读入,字母的统计,统计结果的输出*/
fuzhi(str);
count(letter,str);
printf("该字符串中有:\n");
printresult(letter);
return(0);
}
/*定义无返回值的函数void fuzhi(int[]),读取字符串*/
void fuzhi(char str[])
{
int i=1;
/*读取第一个字符*/
scanf("%c",&str[0]);
/*读取字符并计数,到‘#’结束*/
while(str[i-1]!='#')
{
scanf("%c",&str[i]);
i=i+1;
a=a+1;
}
}
/*定义无返回值的函数void count(int[],char[]),统计
*字符串中各字母的个数
*/
void count(int letter[],char str[])
{
int i;
/*统计各字母个数*/
for(i=0;i<=a;i++)
{
letter[str[i]]+=1;
}
}
/*定义无返回值的函数void printresult(int[]),输出
*统计结果。
*/
void printresult(int letter[])
{
int i;
/*选择字母的信息输出*/
for(i='A';i<='Z';i++)
{
if(letter[i]!=0)
printf("%d个%c\n",letter[i],i);
}
for(i='a';i<='z';i++)
{
if(letter[i]!=0)
printf("%d个%c\n",letter[i],i);
}
}