函数问题: 输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。(用函数的形式)
输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。(用函数的形式)
程序代码:
#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]);
}