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

串的简单处理

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 1.    把每个单词的首字母变为大写。
 3 2.    把数字与字母之间用下划线字符(_)分开,使得更清晰
 4 3.    把单词中间有多个空格的调整为1个空格。
 5 */
 6 #include <iostream>
 7 
 8 using namespace std;
 9 
10 int main()
11 {
12     char s[101];
13     while(cin.getline(s,100,'
')){
14         //1.    把每个单词的首字母变为大写。
15         int i;
16         for(i=0;s[i]!='';i++){
17             if(s[i]!=' ')
18                 if(('a'<=s[i] && s[i]<='z')){
19                     s[i]-=32;
20                     break;
21                 }
22                 else break;
23         }
24         for(i=i+1;s[i]!='';i++){
25             if(s[i]==' '){
26                 if( ('a'<=s[i+1] && s[i+1]<='z') && s[i+1]!=''){
27                     s[i+1]-=32;
28                 }
29             }
30         }
31         //2.    把数字与字母之间用下划线字符(_)分开,使得更清晰
32         //3.    把单词中间有多个空格的调整为1个空格。
33         for(i=0;s[i]!='';i++){
34             if( '0'<=s[i] && s[i]<='9' ){
35                 if( ('a'<=s[i+1] && s[i+1]<='z') || ('A'<=s[i+1] && s[i+1]<='Z') )
36                     cout<<s[i]<<'_';
37                 else
38                     cout<<s[i];
39             }
40             else if( ('a'<=s[i] && s[i]<='z') || ('A'<=s[i] && s[i]<='Z') ){
41                 if(  '0'<=s[i+1] && s[i+1]<='9'  )
42                     cout<<s[i]<<'_';
43                 else
44                     cout<<s[i];
45             }
46             else if(s[i]==' ' && s[i+1]==' ')
47                 continue;
48             else
49                 cout<<s[i];
50         }
51         cout<<endl;
52     }
53     return 0;
54 }

Freecode : www.cnblogs.com/yym2013

原文地址:https://www.cnblogs.com/yym2013/p/3460342.html