【模拟】C++与Java

                                                                    C++与Java
                            Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu

Description

按照Java的命名规范,由一个多个单词构成的变量名的命名规则为:第一个单词的开头为小写字母,其余单词都以大写字母开头,单词与单词之间不加任何分隔符,除了单词的首字母之外的其他字母一律使用小写。例如:name、myName。而C++的命名则全部使用小写字母,在单词和单词之间使用“_”来作为分隔符。例如:name、my_name。
      你的任务就是写一个程序把按照C++的命名方式命名的变量名转换为Java的命名方式。

Input

输入包含多组测试数据。

每组数据为一行字符串(字符串长度不超过100)。

Output

对于每组测试数据,输出转换后的字符串。注意:如果输入的字符串不符合C++的命名规范,则输出“Error”(不包含引号)。

Sample Input

my_name
myName

Sample Output

myName
Error

#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
");
                        flag =1;
                        break;
                    }
                }
                else
                {
                    printf("Error
");
                    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
", t);
    }
    return 0;
}
View Code
每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
原文地址:https://www.cnblogs.com/6bing/p/4115617.html