无法完全通过,求指点。
#include <cstdio>
#include <map>
#include <iostream>
#include <cstring>
using namespace std;
map <string,int> str2num;
map <int,string> num2str; // map容器不能在开口,
string str1[13]={"tret","jan","feb", "mar", "apr","may" , "jun", "jly", "aug", "sep", "oct", "nov","dec" };
string str2[13]={"tret","tam","hel", "maa", "huh", "tou", "kes" , "hei", "elo", "syy", "lok", "mer","dec" };
string numtostr[170];
//num2str[1]="11" ; map不能做全局定义
map<string,int>strtonum;
void uuuuu(){
int i,j,k;
for(i=0;i<13;i++){
numtostr[i]=str1[i];
strtonum[str1[i]]=i;
}
for(i=0; i<13;i++){
numtostr[i*13]=str2[i];
strtonum[str2[i]]=i*13;
}
for(i=1;i<13;i++){
for(j=1;j<13;j++){
numtostr[i*13+j]=str2[i]+" "+str1[j];
strtonum[str2[i]+" "+str1[j]]=i*13+j;
}
}
} //用循环来打表,这样比手动快多了。
int main(){
uuuuu();
int N,sum=0;
string str;
scanf("%d",&N);
getchar();
while(N){
getline(cin,str);
if(str[0]>='0'&&str[0]<='9'){
for(int i=0;i<str.size();i++){
sum=sum*10+str[i]-'0';
}
cout<<numtostr[sum];
}else{
cout<<strtonum[str];
}
if(N!=01) printf("\n");
N--;
sum=0;
str.clear();
}
return 0;
}
转载须注明出处。