22-23(1)第5次线上赛()

日期格式转换

跳转链接: 3962:日期格式转换

要点

  • 字符串的整行输入
    string类型进行带空格的整行输入使用getline(cin,变量名)
  • 多吃一个回车
    因为在使用getline整行输入前还需要输入一个整数n,而n后有回车,所以必须把这个回车给”吃掉”

代码

#include<iostream>
#include<cstdio>

using namespace std;

string mm[]={"","Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sept.","Oct.","Nov.","Dec."};
string sp[3];

void split(string s)
{
	int x=0;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]==' ') x++;
		else if(s[i]==',') continue;
		else p[x]+=s[i];
	}
}

int find_m(string s)
{
	for(int i=1;i<=12;i++)
		if(s==mm[i]) return i;
	return 0;
}
int main()
{
	int n;
	scanf("%d",&n);
	string temp; //吃掉回车
	getline(cin,temp);
	
	while(n--)
	{
		string s;
		getline(cin,s); //整行输入

		split(s);		
		
		if(find_m(sp[0])) cout<<sp[2]<<"."<<find_m(sp[0])<<"."<<sp[1]<<endl;
		else cout<<sp[2]<<"."<<find_m(sp[1])<<"."<<sp[0]<<endl;
		
		for(int i=0;i<3;i++) sp[i]="";
	}
	return 0;
}

姓名顺序

跳转链接3958:姓名顺序

要点

  • 增强for循环
    普通for循环for(auto iterator it = v.begin(); it!= v.end(); ++it) cout<<*it<::iterator
    增强for循环for(auto it:v) cout<
  • sort函数加头文件
    !!!经常忘记

代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

typedef pair<string,string> PII;

bool mycmp(PII& p1,PII& p2)
{
	return p1.first<p2.first;
}

int main()
{
	vector<PII> v;
	
	for(int i=0;i<10;i++)
	{
		string s1,s2;
		cin>>s1>>s2;
		
		string t1=s2+" "+s1;
		string t2=s1+" "+s2;
		v.push_back({t1,t2});
	}
	
	sort(v.begin(),v.end(),mycmp);
	
	for(auto it:v)
	{
		cout<<it.second<<endl;
	}
	
	return 0;
} 
————————

日期格式转换

跳转链接: 3962:日期格式转换

要点

  • 字符串的整行输入
    string类型进行带空格的整行输入使用getline(cin,变量名)
  • 多吃一个回车
    因为在使用getline整行输入前还需要输入一个整数n,而n后有回车,所以必须把这个回车给”吃掉”

代码

#include<iostream>
#include<cstdio>

using namespace std;

string mm[]={"","Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sept.","Oct.","Nov.","Dec."};
string sp[3];

void split(string s)
{
	int x=0;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]==' ') x++;
		else if(s[i]==',') continue;
		else p[x]+=s[i];
	}
}

int find_m(string s)
{
	for(int i=1;i<=12;i++)
		if(s==mm[i]) return i;
	return 0;
}
int main()
{
	int n;
	scanf("%d",&n);
	string temp; //吃掉回车
	getline(cin,temp);
	
	while(n--)
	{
		string s;
		getline(cin,s); //整行输入

		split(s);		
		
		if(find_m(sp[0])) cout<<sp[2]<<"."<<find_m(sp[0])<<"."<<sp[1]<<endl;
		else cout<<sp[2]<<"."<<find_m(sp[1])<<"."<<sp[0]<<endl;
		
		for(int i=0;i<3;i++) sp[i]="";
	}
	return 0;
}

姓名顺序

跳转链接3958:姓名顺序

要点

  • 增强for循环
    普通for循环for(auto iterator it = v.begin(); it!= v.end(); ++it) cout<<*it<::iterator
    增强for循环for(auto it:v) cout<
  • sort函数加头文件
    !!!经常忘记

代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

typedef pair<string,string> PII;

bool mycmp(PII& p1,PII& p2)
{
	return p1.first<p2.first;
}

int main()
{
	vector<PII> v;
	
	for(int i=0;i<10;i++)
	{
		string s1,s2;
		cin>>s1>>s2;
		
		string t1=s2+" "+s1;
		string t2=s1+" "+s2;
		v.push_back({t1,t2});
	}
	
	sort(v.begin(),v.end(),mycmp);
	
	for(auto it:v)
	{
		cout<<it.second<<endl;
	}
	
	return 0;
}