A1100 Mars Numbers [map映射]

在这里插入图片描述

貌似cin完之后;读入的光标实际上是停在cin读入的c的后面;这时如果是用cin.get或cin.getline或getchar之类的东西再读入,就会吃进c后面的回车;而如果用cin读入,因为cin本身是会略过回车读入的,所以对cin不会有影响

#include<vector>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<set>
#include<map>
#include<cstring>
#include<string>
using namespace std;
string a[13] = { "tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", 
"oct", "nov", "dec" };
string b[13] = { "####", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", 
"syy", "lok", "mer", "jou" };
void func1(int t)
{
	if (t / 13) cout << b[t / 13];
	if ((t / 13) && (t % 13)) cout << " ";
	if (t % 13 || t == 0)  cout << a[t % 13];
}
void func2(string s)
{
	int t1 = 0, t2 = 0;
	string s1 = s.substr(0, 3), s2;
	if (s.length() > 4) 
		s2 = s.substr(4, 3);
	for (int j = 1; j <= 12; j++)
	{
		if (s1 == a[j] || s2 == a[j]) t2 = j;
		if (s1 == b[j]) t1 = j;
	}
	cout << t1 * 13 + t2;
}
int main()
{
	int n; string s;
	cin >> n;
	getchar();
	for (int i = 0; i < n; i++)
	{
		getline(cin, s);
		if (s[0] >= '0' && s[0] <= '9')
			func1(stoi(s));
		else
			func2(s);
		cout << endl;
	}
	return 0;
}
posted @ 2020-07-19 10:45  _Hsiung  阅读(48)  评论(0编辑  收藏  举报