ytu 1304:串的简单处理(水题)

时间:2023-11-14 18:58:44

串的简单处理

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 39  Solved: 11
[Submit][Status][Web Board]

Description

串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1.    把每个单词的首字母变为大写。
2.    把数字与字母之间用下划线字符(_)分开,使得更清晰
3.    把单词中间有多个空格的调整为1个空格。

Input

例如:
用户输入:
you and     me what  cpp2005program

Output

则程序输出:
You And Me What Cpp_2005_program

Sample Input

this is a 99cat

Sample Output

This Is A 99_cat

HINT

  第一次提交这道水题竟然WA,看了一下问题出在将所有单词首字母变为大写那部分,原因是那部分代码我直接copy的前面做过的一道题,而两道题的情况又不一样,所以一般不要copy,因为你也不知道copy的代码放到当前情况到底适不适应。

 /*
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
*/
#include <iostream> using namespace std; int main()
{
char s[];
while(cin.getline(s,,'\n')){
//1. 把每个单词的首字母变为大写。
int i;
for(i=;s[i]!='\0';i++){
if(s[i]!=' ')
if(('a'<=s[i] && s[i]<='z')){
s[i]-=;
break;
}
else break;
}
for(i=i+;s[i]!='\0';i++){
if(s[i]==' '){
if( ('a'<=s[i+] && s[i+]<='z') && s[i+]!='\0'){
s[i+]-=;
}
}
}
//2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
//3. 把单词中间有多个空格的调整为1个空格。
for(i=;s[i]!='\0';i++){
if( ''<=s[i] && s[i]<='' ){
if( ('a'<=s[i+] && s[i+]<='z') || ('A'<=s[i+] && s[i+]<='Z') )
cout<<s[i]<<'_';
else
cout<<s[i];
}
else if( ('a'<=s[i] && s[i]<='z') || ('A'<=s[i] && s[i]<='Z') ){
if( ''<=s[i+] && s[i+]<='' )
cout<<s[i]<<'_';
else
cout<<s[i];
}
else if(s[i]==' ' && s[i+]==' ')
continue;
else
cout<<s[i];
}
cout<<endl;
}
return ;
}

Freecode : www.cnblogs.com/yym2013