【模拟】C++与Java
C++与Java
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluDescription
按照Java的命名规范,由一个多个单词构成的变量名的命名规则为:第一个单词的开头为小写字母,其余单词都以大写字母开头,单词与单词之间不加任何分隔符,除了单词的首字母之外的其他字母一律使用小写。例如:name、myName。而C++的命名则全部使用小写字母,在单词和单词之间使用“_”来作为分隔符。例如:name、my_name。
你的任务就是写一个程序把按照C++的命名方式命名的变量名转换为Java的命名方式。
Input
输入包含多组测试数据。
每组数据为一行字符串(字符串长度不超过100)。
Output
对于每组测试数据,输出转换后的字符串。注意:如果输入的字符串不符合C++的命名规范,则输出“Error”(不包含引号)。
Sample Input
my_name myName
Sample Output
myName Error
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<string.h> #include<string.h> int main() { char s[1000], t[1000]; int len, i, k, flag; while(gets(s)!=NULL) { k =0; flag = 0; memset(t, 0, sizeof(t)); len = strlen(s); for(i=0; i<len; i++)//判是否为合法C++命名 { if(s[i]<'a' || s[i]>'z') { if(s[i]=='_') { if(s[0]=='_' || s[len-1]=='_' || s[i+1]=='_') { printf("Error\n"); flag =1; break; } } else { printf("Error\n"); flag = 1; break; } } } if(flag) continue; for(i=0; i<len; i++)//如果合法改为Java命名形式 { if(s[i]=='_') ; else if(s[i]>='a' && s[i]<='z') { if(s[i-1]=='_') t[k++] = s[i]-32; else t[k++] = s[i]; } } printf("%s\n", t); } return 0; }
每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。