思路:使用getline(cin ,some)读取整行文本
1.判断是不是数字
将字符串的数字转换为数字sum
如果sum<13 不需要进制转换,直接输出对应的个位字符串
如果大于13
如果sum是13的倍数 则只用输出高位的,个位的0不用输出
否则 打印第一位 再打印第二位
2.是字符串时
4位一循环
先判断个位上有没有对应的 把对应数字加上去
再判断高位上有没有对应的 把sum +=(对应数字+1)*13
#include<iostream>
#include<string>
using namespace std;
string gewei[13] ={"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string gaowei[13] = {"tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
int main()
{
int n;
cin >> n;
int len;
string mess;
getchar();
while(n--)
{
int sum=0;
getline(cin,mess);
if(mess[0]>='0'&&mess[0]<='9')//数字
{
for(int j=0;j<mess.size();j++)
{
sum = sum*10 + (mess[j]-'0');
}
//cout << sum;
if(sum<13)
cout << gewei[sum] << endl;
else
{
if(sum%13==0)
{
cout << gaowei[sum/13-1] << endl;
}
else
{
cout << gaowei[sum/13-1] << " " << gewei[sum%13] << endl;
}
}
}
else
{
for(int k=0;k<mess.size();k=k+4)
{
string three = "";//初始化
three = three+mess[k]+mess[k+1]+mess[k+2];
for(int l=0;l<13;l++)
{
if(three==gewei[l])
{
sum += l;
}
if(three==gaowei[l])
{
sum += sum + (l+1)*13;
}
}
}
cout << sum << endl;
}
}
}