题意:
输入共一行,为转换后的文本文件。保证文本文件非空,且转换前至少有一个换行符。输入可能包含空格。
数据范围:
对于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; }