题意:(附带链接)
输入共一行,为转换后的文本文件。保证文本文件非空,且转换前至少有一个换行符。输入可能包含空格。
数据范围:
- 对于40% 的数据,保证不存在空格。
- 对于100% 的数据,保证输入字符串的长度≤10^5。输入中仅包含大写英文字母、小写英文字母、下划线、数字、空格和转义字符(
\r
、\n
)。
样例:
输入 #1
SCP2021RPplusplus\nchenzheAKIOI\n1plus1equalto2\n
输出 #1
linux
思路:
不难发现这题就是考察对字符串的处理,难度也只是入门难度
①:那么只需要使用getline 函数读入整行字符串,然后使用find 函数查询里面是否含有即可。要注意的是,如果find函数没能查找到某个需要匹配的字符串,返回值是 ULLONG_MAX。
②:fgets(数组名,最大长度,stdin);因为gets在c++11后就无了,得学会使用fgets函数
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+1000;
char ss[maxn];
int main()
{
string s1,s2;
int n,i,j,t;
// fgets(ss,maxn,stdin);
getline(cin,s1);
cout<<ss<<" "<<s1<<endl;
int d1=s1.length()-1,f1=1;
for(i=0;i<d1+1;i++)
{
if(s1[i]=='\\'&&s1[i+1]=='r'&&s1[i+2]=='\\'&&s1[i+3]=='n'&&f1<4)
f1=4;
else if(s1[i]=='\\'&&s1[i+1]=='n'&&f1<3)
f1=3;
else if(s1[i]=='\\'&&s1[i+1]=='r'&&f1<2)
f1=2;
}
if(f1==4)
{
cout<<"windows"<<endl;
}
else if(f1==3)
{
cout<<"linux"<<endl;
}
else
{
cout<<"mac"<<endl;
}
return 0;
}