题目描述:
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写,字符串长度小于500。
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。
输出描述:
输出输入字符串中含有该字符的个数。
示例:
输入:
ABCabcA
输出:
2
解题思路:
输入一个字符串和字母,分析该字母在字符串中出现的次数,最简单的方法就是遍历一遍,在ASCII表里,大小写之间差了32,判断的时候除了判断字符本身,也判断该字符加减32的情况,就可以统计出出现次数,但这仅仅是基于字符串中只有字母数字和空格。
测试代码:
#include <iostream> #include <string> using namespace std; int main() { // 输入字符串 string s; getline(cin,s); // 输入字符 char test; cin>>test; int number=0; int size=s.length(); for(int i=0;i<size;i++) { // 考虑大小写情况 if(s[i]==test||s[i]==test-32||s[i]==test+32) number++; } cout<<number<<endl; return 0; }
之前使用include<string.h>,有同学反映会报错,确实如此,目前已经修正为include<string>。
非常感谢提出异议的同学,能看出来你们有认真刷题和思考,这是非常好的学习习惯。
希望你们能坚持下去,把华为机试这套题目刷完,如果能掌握华为机试,可以说你的C++水平已经过了入门级别了,后面可以结合一些实战场景或项目,来进一步提高自己的编程能力,加油!
PS:编程只是工具,如果想提高自己的核心竞争力,专业知识和技能才是你战胜他人、杜绝内卷的最佳武器,数学更是重要的基石。