任意长度的字符串,统计各字母个数

来源:百度文库 编辑:神马文学网 时间: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);

       }

}

运行效果如图: