字符串处理
描述
给定一个字符串,将其中所有的小写字母转换成大写字母,并删除数字。
输入
输入一行,包含一个字符串(长度不超过100,可能包含空格)。
输出
输出转换后的字符串。
输入样例1
helloworld123Ha
输出样例1
HELLOWORLDHA
来源引用
https://blog.csdn.net/qq_31790997/article/details/86691270
题解:
思路:
枚举每个字符串判断其是否为小写字母,若为小写字母,则该字符减去(‘a’ - ‘A’),
若为数字就删除,且需要把数字后面元素全部往前挪一位。
注:
1° 字符串可能有空格,故用getline输入,而不是cin,格式:getline(cin, 字符串名称),
2° 用(‘a’ - ‘A’)的原因是:小写字母和大写字母在计算中用ASCII码表示(ASCII码对照表),小写字母的ASCII码值都比大写字母的ASCII码值大,而它们相差(‘a’ - ‘A’)故减去(‘a’ - ‘A’)。
3° 若是大写字母转成小写字母,则加上(‘a’ - ‘A’)。
①如果出现数字
if(str[i]<='9'&& str[i]>='0')
②如果出现小写字母
if ('a' <= str[i] && str[i] <= 'z')
完整代码
#include <string>
#include <iostream>
using namespace std;
int main() {
string str;
getline(cin, str);
for (int i = 0; i < str.size(); i++) {
if ('a' <= str[i] && str[i] <= 'z') { // 判断是否为小写字母
str[i] = str[i] - ('a' - 'A'); // 转成大写字母
}
if(str[i] <= '9' && str[i] >= '0'){//判断数组中的为数字
for(j=i; str[j] != '\0'; j++){
str[j] = str[j+1];//后面位置全部往前挪一位
}
}
cout << str[i];//最终处理完的字符串输出
}
return 0;
}
完结