题目描述
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
输入例子:
ABCDEF A
输出例子:
1
解题思路:第一反应就是可以把所有的字母输入都转为小写字母,或者所有的字母输入都转换为大写字母,简单直接,可能执行效率不是最好的,但是算法的思路挺简单的,两个循环就可以搞定,那么怎么实现这个字母转换呢。
这里我提供两种方法:
方法一就是判断所有的字母是否为A到Z之间的,如果是就直接加上'a'-'A',其实就是加上32,使其转换为大写字母,因为我们都知道小写字母的ASCII值比大写字母的大32。如程序中方法一所示的代码。
方法二直接使用string函数库中的处理函数tolower()函数直接处理,简单直接,如代码中的方法二的注释。
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1;
char str2;
getline(cin,str1);
cin>>str2;
int i, count=0;
for(i=0;i<str1.length();i++)
{
//=============方法二=============
// str1[i] = tolower(str1[i]);
//=============方法一=============
if(str1[i]>='A'&&str1[i]<='Z')
str1[i]+=('a'-'A');
else
continue;
}
for(i=0;i<str1.length();i++)
{
if(str1[i]==str2)
count++;
}
cout << count;
return 0;
}