关闭

百度之星资格赛 E题 C++ 与Java

标签: cwindowsC#
238人阅读 评论(0) 收藏 举报

题意:中文题,不说了

解法:这道题我没有什么好的方法,就是单个判断,话说,这道题考虑的情况好多,wa了7次才过,各种纠结。。。

ac代码:

  1. #include <iostream>  
  2. #include <string.h>  
  3. #include <string>  
  4. #include <cstdio>  
  5.   
  6. using namespace std;  
  7.   
  8. int main(){  
  9.     //freopen("1.txt","r",stdin);  
  10.     int cnt = 1;  
  11.     string ss;  
  12.     char ch[110];  
  13.     while(gets(ch)){  
  14.       //scanf("%s",ch);  
  15.         //puts("ch");  
  16.       int flag1 = 0,flag2 = 0,flag3 = 0;  
  17.       int len = strlen(ch);  
  18.       for(int i = 0;i < len;++i){  
  19.          if(ch[i] == '_')  
  20.              flag1 = 1;  
  21.          if(flag1 && ch[i] >= 'A' && ch[i] <= 'Z')  
  22.              flag2 = 1;  
  23.          if(ch[i] == '_' && ch[i+1] == '_'){  
  24.            flag3 = 1;  
  25.            break;  
  26.          }  
  27.          if(flag1 == 1 && flag2 ==1){  
  28.            flag3 = 1;  
  29.            break;  
  30.          }  
  31.          if(!((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] == '_') )){  
  32.            flag3 = 1;  
  33.            break;  
  34.          }  
  35.       }  
  36.       if(!(ch[0] >= 'a' && ch[0] <= 'z'))  
  37.           flag3 = 1;  
  38.       if(!((ch[len-1] >= 'a' && ch[len-1] <= 'z') || (ch[len-1] >= 'A' && ch[len-1] <= 'Z')))  
  39.           flag3 = 1;  
  40.      // printf("输出样例%d:\n",cnt++);  
  41.       if(flag3 == 1){  
  42.         puts("Error!");  
  43.         continue;  
  44.       }  
  45.       int b1 = 0,b2 = 0;  
  46.       for(int i = 0; i < len;++i){  
  47.           if(ch[i] == '_'){  
  48.             b1 = 1;  
  49.             break;  
  50.           }  
  51.       }  
  52.       if(!b1) b2 = 1;  
  53.       if(b1 == 1){  
  54.           for(int i = 0;i < len;++i){  
  55.               if(ch[i] == '_'){  
  56.                 ch[i+1] = ch[i+1] - 32;  
  57.               }  
  58.           }  
  59.           for(int i = 0;i < len;++i){  
  60.             if(ch[i] == '_')  
  61.                 continue;  
  62.             printf("%c",ch[i]);  
  63.           }  
  64.           printf("\n");  
  65.       }  
  66.       char c;  
  67.       int flag4 = 0;  
  68.       if(b2 == 1){  
  69.           for(int i = 0;i < len;++i){  
  70.               if(ch[i+1] >= 'A' && ch[i+1] <= 'Z'){  
  71.                  c = '_';  
  72.                  flag4 = 1;  
  73.                  ch[i+1] = ch[i+1] + 32;  
  74.               }  
  75.               printf("%c",ch[i]);  
  76.               if(flag4){  
  77.                 printf("%c",c);  
  78.                 flag4 = 0;  
  79.               }  
  80.           }  
  81.           printf("\n");  
  82.       }  
  83.     }  
  84.     return 0;  
  85. }  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:91215次
    • 积分:2931
    • 等级:
    • 排名:第12092名
    • 原创:209篇
    • 转载:19篇
    • 译文:0篇
    • 评论:10条
    最新评论