函数问题: 输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。(用函数的形式)
输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。(用函数的形式)
#include<stdio.h> #include<ctype.h> // isalpha()函数和isdigit()函数的声明 // 程序中尽量不要直接出现数值(所谓的神仙数字),那样会降低程序可读性,是公司、团队开发的大忌。 #define ALPHA 0 #define NUMBER 1 #define SPACE 2 #define OTHER 3 // 如无万分必要,不要定义全局数据;即使需要全局数据,也尽量是“只读”的;这样可以降低模块间的耦合程度,符合软件工程的基本思想。 const char *charType[] = { "字母字符", // 下标为0 "数字字符", // 下标为1 "空格", // 下标为2 "其它字符" // 下标为3 }; void getFreq(char *str, int *freq); // 实现统计工作 void getFreq(char *str, int *freq) { int i; int type; for(i = 0; str[i]; i++) // 字符串存在一个0结束标识(最恶心人的念法是“杠零”,为什么不叫“哑铃”呢!);这就是标准的“遇0则止” { if(isalpha(str[i])) type = ALPHA; else if(isdigit(str[i])) type = NUMBER; else if(str[i] == ' ') type = SPACE; else type = OTHER; freq[type]++; } } void main(void) { char str[128]; int freqCount[4] = {0}; int i; printf("请输入一串字符:\n"); gets(str); getFreq(str, freqCount); for(i = 0; i < 4; i++) printf("%s出现%d次\n", charType[i], freqCount[i]); }