16. 从键盘输入任意长度的字符串,统计各字母个数 /*从键盘读入不超过SIZE个(SIZE是程序中定义的常量) *的任意长度的字符串,要求分别统计出出现在该字符 *串中的各字母的个数(区分大小写)。 */ #include <stdio.h> /*声明常量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); } } 运行效果如图:
|
|