思路:使用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;} }
}