课内学习02
习题4:
用指针编写一个程序,当输入一个字符后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。【注:需要使用cin.getline(xrf, 100);】
传统惯例,先上代码(解释见下文):
#include <iostream>
using namespace std;
int main()
{
system("color F0");
char xrf[100];
cout << "请输入一个字符串:"<<endl;
cin.getline(xrf, 100);//使用题目条件中要求的代码;
cout << endl;
int number = 0, capital = 0, lowercase = 0, i, other = 0;
for (i = 0; xrf[i] != '\0'; i++)
{
if (xrf[i] >= '0' && xrf[i] <= '9')number++;
else if (xrf[i] >= 'a' && xrf[i] <= 'z')lowercase++;
else if (xrf[i] >= 'A' && xrf[i] <= 'Z')capital++;
else other++;
}
//输出相关信息
cout << "用户输入的字符串总字符个数为:" << i << endl;
cout << "用户输入的字符串中大写字母总个数为:" << capital << endl;
cout << "用户输入的字符串中小写字母总个数为:" << lowercase << endl;
cout << "用户输入的字符串中数字总个数为:" << number << endl;
cout << "用户输入的字符串中其他字符总个数为:" << other << endl;
system("pause");
return 0;
}
解释:
1.大部分类型的字符都有对应的ASCII码值,对照ASCII码表即可知道:
0~9为数字的ASCII码值范围;
65~90为大写字母的ASCII码值范围;
97~122为小写字母的ASCII码值范围;
其他ASCII码值即为题中要求的其他字符;
2.故只要判断用户所输入字符的ASCII码值处于哪个范围内即可知道是数字、大写、小写还是其他字符了;
再定义几个变量分别计算对应字符类型个数并输出即可。
注:
博主直接使用类似 ‘a’~‘z’ 区间来判断是什么类型的字符。这种方法也是可行的,并且更加直观,方便,不易错。
if (xrf[i] >= 'a' && xrf[i] <= 'z')lowercase++;
测试运行结果如下: