在日常敲代码学习中,我们经常碰到求一串字符中所包含字符的题目,小编也总结了几种求字符个数的方法。
一、求各类字符的数量
思路其实比较简单,就是用c语句分类统计各类字符数量
123cyua zmcaja acaasa}}}[
#include <stdio.h>
int main()
{
char c; \\定义字符串
int letters=0,space=0,digit=0,other=0; \\定义字符初始量数量
while ((c=getchar())!=EOF) \\运用循环语句读到文件结尾截止
{
if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z') \\计算大写字母和小写字符数量
letters++;
else if (c == ' ') \\计算空格数量
space++;
else if (c >= '0'&&c <= '9') \\计算数字数量
digit++;
else
other++; \\其他字符数量
}
printf("%d %d %d %d",letters,space,digit,other);
return 0;
}
二、统计单词个数
当c程序中读取一段字符时,计算机并不会像人的大脑一样读取单词计算数量,那将如何让计算机成功统计出单词数量呢?
因为每个单词的长短不一,字母不一致,计算机是很难判断出输入的字符串是不是单词的,但是,计算机虽然不认识单词,但是可以读取出空格啊。因此,我们可以让计算机读取字符串中的空格,
thank you very much
我们不难看出,字母数=空格数+1 ,因此,可编写c程序
#include <stdio.h>
int main() {
char a[100];
int i, in_word, word_num;
gets(a);
word_num = 0; // 初始化单词个数为0
in_word = 0; // 标记位,标记是否在单词内
for (i = 0; a[i]; i++) {
if (a[i] == ' ') { // 检测到空格
in_word = 0; // 设置标记位为不在单词内
} else if (in_word == 0) { // 在单词内
word_num++; // 统计单词个数
in_word = 1; // 设置标记位为在单词内
}
}
printf("%d", word_num);
return 0;
}
总结:C语言是一种有规律的的语言,运用适当的方法编写程序会让程序更简单,效率更高,如果大家有什么更好的方法,欢迎大家评论指点!