百度之星参赛经历~~真的让我很郁闷~
得出来的结论~~
要细心一点尤其是 c++-----java 这道题要注意 在处理字符串的时候有 len 后 for 循环的变量是从 0 - len-1。这样才合理。
这是自己错误的情况还要考虑
1:首字符是小写字符。
2:所有的字符中仅包含'_',A-Z,a-z这个范围内的数据。
3:最后的字符不应含有‘_’.
4:不应含有连续两个或两个以上的‘_’.会影响最后结果的判定。
5:包含有仅有小写字母(只有一个单词的情况)原样输出:
6:输出 c()转换。
7:输出java()转换。
下面附上这道题: 注意输出不包含样例
E:C++ 与Java
-
时间限制:
- 2000ms 内存限制:
- 65536kB
-
描述
-
在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时。Java的爱好者会说他们的程序更加整洁且不易出错。C++的爱好者则会嘲笑Java程序很慢而且代码很长。
另一个Java和C++爱好者不能达成一致的争论点就是命名问题。在Java中一个多个单词构成的变量名应该按照如下格式命名:第一个单词的开头用小写字母,其余单词都以大写字母开头,单词与单词之间不加分隔符,除单词的首字母之外的字母一律使用小写。例如:javaIdentifier, longAndMnemonicIdentifier, name, bAIDU.
与Java不同C++的命名全都使用小写字母,在单词和单词之间使用“_”来作为分隔符。例如:c_identifier, long_and_mnemonic_identifier, name (当名字中只有一个单词的时候,Java与C++的命名是相同的), b_a_i_d_u.
你的任务就是写一个程序能让C++和Java程序相互转化。当然转换完成的程序中的变量名也要符合其语言的命名规则,否则的话是不会有人喜欢你的转换器的。
首先你要做的就是写一个变量名转换器。给出一个变量名,你要先检测是Java的还是C++的,然后把它转化为另一种命名格式。如果两种都不是,那么你的程序就要报错。转换过程必须保持原有的单词顺序,只能改变字母的大小写和增加或删除下划线。
输入
- 输入有且仅有一行,是一个变量名,其中包含字母和下划线,长度不超过100。 输出
- 如果输入的是Java变量名那么输出它对应的C++形式。如果是C++的则输出对应的Java的形式。如果两种都不是就输出“Error!”。 样例输入
-
输入样例1: long_and_mnemonic_identifier 输入样例2: anotherExample 输入样例3: i 输入样例4: bad_Style
样例输出
-
输出样例1: longAndMnemonicIdentifier 输出样例2: another_example 输出样例3: i 输出样例4: Error!
考虑的情况比较多:贴上自己的代码:
#include<stdio.h> #include<string.h> char a[110]; int len; void java() { int i; for(i=0;i<len;i++) { if(a[i]=='_'){printf("%c",a[++i]-32);} else printf("%c",a[i]); } printf("\n"); } void c() { int i; for(i=0;i<len;i++) { if(a[i]<='Z'&&a[i]>='A')printf("_%c",a[i]+32); else printf("%c",a[i]); } printf("\n"); } int main() { int flag1,flag2,flag3,flag4,i,sum1,sum2; while(gets(a)) { flag1=flag2=flag3=flag4=sum1=sum2=0; len=strlen(a); if(a[0]>'z'||a[0]<'a'||a[len-1]=='_'){printf("Error!\n");continue;} for(i=0;i<len;i++) { if(a[i]=='_'&&a[i+1]=='_'){flag1=1;break;} if(a[i]=='_'){flag2=1;} if(a[i]<='Z'&&a[i]>='A'){flag3=1;} if((a[i]<='Z'&&a[i]>='A')||(a[i]<='z'&&a[i]>='a')||a[i]=='_')sum1++; if(a[i]<='z'&&a[i]>='a')sum2++; } if(flag1==1){printf("Error!\n");continue;} if(flag2==1&&flag3==1){printf("Error!\n");continue;} if(sum1!=len){printf("Error!\n");continue;} if(sum2==len){printf("%s\n",a);continue;} if(flag2==1){java();continue;} if(flag3==1){c();continue;} } }