目录
题目描述——串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
-
把每个单词的首字母变为大写。
-
把数字与字母之间用下划线字符(_)分开,使得更清晰
-
把单词中间有多个空格的调整为 1 个空格。
输入描述
用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由 1 个或多个空格分隔。假设用户输入的串长度不超过 200 个字符。
输出描述
输出处理好的字符串。
输入输出样例
示例
输入
you and me what cpp2005program
输出
You And Me What Cpp_2005_program
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
AC代码
#include<iostream>
#include<string>
using namespace std;
char Upper(char ch)
{
if (ch >= 'a' && ch <= 'z') {
ch = ch - 32;
}
return ch;
}
int main()
{
string str;
getline(cin, str);
str[0]=Upper(str[0]);
//采用直接输出的方式进行加字符_
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ') {
if (str[i + 1] == ' ') continue;
if (str[i + 1] >= 'a' && str[i + 1] <= 'z') str[i + 1]=Upper(str[i + 1]);
}
cout << str[i];
//注意当a变成A时也应包含在内
if ((str[i] >= 'a' && str[i] <= 'z')|| (str[i] >= 'A' && str[i] <= 'Z')) {
if (str[i + 1] <= '9' && str[i + 1] >= '0') cout << "_";
}
if (str[i] <= '9' && str[i] >= '0') {
if ((str[i+1] >= 'a' && str[i