# 题目文章来源:https://www.toymoban.com/news/detail-739178.html
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数文章来源地址https://www.toymoban.com/news/detail-739178.html
//要求:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
#include <iostream>
using namespace std;
int main1(void){
//在assic码表中:
//48-57是10个数字,65 ~ 90 为大写字母,97 ~ 122 为小写字母
//“空格(Space)的ASCII码值是32,,剩下的是特殊字符了
int letter = 0, space = 0, digit = 0, others = 0;//字母,空格,数字和其它
//使用循环接收用户输入,知道获取回车为止
//在循环中嵌套if语句,对每一个输入的字符进行判断
char c;
cout<<"请输入需要分类计数的文本:";
while((c = getchar())!= '\n'){
//我们是可以用int()将c转换为数字判断他的范围,
//不过char类型也是可以比大小的,原理一样
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letter++;
else if(c>='0'&&c<='9')
digit++;
else if(c==' ')
space++;
else
others++;
}
cout<<"字母数:"<<letter<<"数字数:"<<digit<<"空格数:"<<space<<"其它字符数:"<<others;
return 0;
//除此之外,你还可以先将输入的文本保存在变量中,然后遍历这个变量进行统计
//可以尝试使用字符数组,这样做的缺点是你无法准确预测用户输入多少个字符,太大浪费内存,太小可能溢出(strlen()用来获取字符串长度)
//建议使用C++新增的数据类型string来储存,使用string类型时我们不必再定义他的长度,此外还有其他更方便易用的属性。
//有别于c语言中的strlen()c++中string提供了两种不同方式来获取string字符串的长度,分别是int len1 = str.size();
//int len2 = str.length();
}
//string并不是内置的数据类型,而是C++标准库中声明的一个字符串类
//在使用它之前我们需要先导入<stirng>
#include <string>
#include <iostream>
using namespace std;
int main(void){
//这次我们利用string来重做
string text;
cout<<"请输入需要分类计数的文本:";
//这是我开始实用的方法
//cin>>text;
//很遗憾它报错了,
//错误情况,输入“I create a new virtual world!”打印text的值发现只有“I”
//以下是失败的原因:
//cin 遇空格停止识别,虽然输入很长一串字符,但是cin在第一个遇到第一个空格就停止输入
//解决办法使用getline把停止识别的符号设置为‘\n’
//cin.getline(text,"\n");
//getline(std::cin,text);
getline(cin, text);
//cout<<text<<endl;
//注意这里有坑
//在C++中本质上有两种getline函数
//第一种:在头文件中,是iostream类的成员函数。
//调用方式std::cin.getline(char* s, streamsize n, char delim );
//函数原型:
//istream& getline (char* s, streamsize n );
//istream& getline (char* s, streamsize n, char delim );
//作用: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,
// 如果遇到delim 或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。
//第二种:在头文件中,是普通函数。
//调用方式:std::getline(istream& is, string& str, char delim)
//用法和上第一种类似,但是读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
//函数的变量:
//is :表示一个输入流,例如 cin。
//str :string类型的引用,用来存储输入流中的流信息。
//delim :char类型的变量,所设置的截断字符;在不自定义设置的情况下,遇到’\n’,则终止输入。
//在此处我们的text是string型数据显然使用第二种,而因为我们已经定义过 using namespace std;且不需要刚更改默认的终止符(换行符)
//所以最终有了合法语句getline(cin, text);
int letter_A = 0, letter_a = 0 ,space = 0, digit = 0, others = 0;//大写字母,小写字母,空格,数字和其它
//接下来简单了,把上一个程序的第一个判断条件拆分开来就好
for(int i=0;i<text.size();i++){
if(text[i]>='a'&&text[i]<='z')
letter_a++;
else if(text[i]>='A'&&text[i]<='Z')
letter_A++;
else if(text[i]>='0'&&text[i]<='9')
digit++;
else if(text[i]==' ')
space++;
else
others++;
}
cout<<"大写字母数:"<<letter_A<<"小写写字母数:"<<letter_a<<"数字数:"<<digit<<"空格数:"<<space<<"其它字符数:"<<others;
return 0;
}
到了这里,关于c++/输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!