22-23(1)第5次线上赛()-其他
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函数加
头文件
!!!经常忘记 - 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函数加
头文件
!!!经常忘记 - 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;
}