ytu 1304:串的简单处理(水题)
串的简单处理
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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,'\n')){ 14 //1. 把每个单词的首字母变为大写。 15 int i; 16 for(i=0;s[i]!='\0';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]!='\0';i++){ 25 if(s[i]==' '){ 26 if( ('a'<=s[i+1] && s[i+1]<='z') && s[i+1]!='\0'){ 27 s[i+1]-=32; 28 } 29 } 30 } 31 //2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 32 //3. 把单词中间有多个空格的调整为1个空格。 33 for(i=0;s[i]!='\0';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