目录
题目描述
输入描述
输出描述
输入
输出
做题思路 1
AC代码 1
做题思路 2
AC代码 2
题目描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写。
输入描述
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。
输出描述
输出输入字符串中含有该字符的个数。
示例1
输入
ABCabc
A
输出
2
做题思路 1
获取该字母的大写和小写,挨个遍历比较就好
AC代码 1
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str; char c;
getline(cin, str);
cin >> c;
char lower = tolower(c);
char upper = toupper(c);
int num = 0;
for(int i=0; i<str.length(); i++){
if(str[i]==lower||str[i]==upper){
num ++;
}
}
cout << num <<endl;
return 0;
}
做题思路 2
把字母转换成大写,把字符串中所有字母也转换成大写,挨个比较。这个思路是为了熟悉transform函数的操作
AC代码 2
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
char c;
getline(cin, str);
cin >> c;
c = toupper(c);
transform(str.begin(), str.end(), str.begin(), ::toupper);
int num = 0;
for(int i=0; i<str.size(); i++){
if( str[i]==c ){
num ++;
}
}
cout << num <<endl;
return 0;
}
代码优化
主要在输入过程中做了调整
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
char ch;
while(getline(cin, str) && cin >> ch){
int count = 0;
for(int i = 0; i < str.length(); i++){
if(tolower(ch) == tolower(str[i])){
count++;
}
}
cout << count << endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)