百度之星资格赛 E题 C++ 与Java
2012-05-29 15:27 javaspring 阅读(207) 评论(0) 收藏 举报题意:中文题,不说了
解法:这道题我没有什么好的方法,就是单个判断,话说,这道题考虑的情况好多,wa了7次才过,各种纠结。。。
ac代码:
#include <iostream>
#include <string.h>
#include <string>
#include <cstdio>
using namespace std;
int main(){
//freopen("1.txt","r",stdin);
int cnt = 1;
string ss;
char ch[110];
while(gets(ch)){
//scanf("%s",ch);
//puts("ch");
int flag1 = 0,flag2 = 0,flag3 = 0;
int len = strlen(ch);
for(int i = 0;i < len;++i){
if(ch[i] == '_')
flag1 = 1;
if(flag1 && ch[i] >= 'A' && ch[i] <= 'Z')
flag2 = 1;
if(ch[i] == '_' && ch[i+1] == '_'){
flag3 = 1;
break;
}
if(flag1 == 1 && flag2 ==1){
flag3 = 1;
break;
}
if(!((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] == '_') )){
flag3 = 1;
break;
}
}
if(!(ch[0] >= 'a' && ch[0] <= 'z'))
flag3 = 1;
if(!((ch[len-1] >= 'a' && ch[len-1] <= 'z') || (ch[len-1] >= 'A' && ch[len-1] <= 'Z')))
flag3 = 1;
// printf("输出样例%d:\n",cnt++);
if(flag3 == 1){
puts("Error!");
continue;
}
int b1 = 0,b2 = 0;
for(int i = 0; i < len;++i){
if(ch[i] == '_'){
b1 = 1;
break;
}
}
if(!b1) b2 = 1;
if(b1 == 1){
for(int i = 0;i < len;++i){
if(ch[i] == '_'){
ch[i+1] = ch[i+1] - 32;
}
}
for(int i = 0;i < len;++i){
if(ch[i] == '_')
continue;
printf("%c",ch[i]);
}
printf("\n");
}
char c;
int flag4 = 0;
if(b2 == 1){
for(int i = 0;i < len;++i){
if(ch[i+1] >= 'A' && ch[i+1] <= 'Z'){
c = '_';
flag4 = 1;
ch[i+1] = ch[i+1] + 32;
}
printf("%c",ch[i]);
if(flag4){
printf("%c",c);
flag4 = 0;
}
}
printf("\n");
}
}
return 0;
}
浙公网安备 33010602011771号