题目大意:
s1<s2>s3<s4>s5
c...
转化为:
s1s2s3s4s5
cs4s3s2s5
解题过程:开始时WA2次,而且没找到原因。。。只能归结于程序写得太繁琐,可能某个地方输出不对了,后来改成平铺直叙的写法,一次AC。
注意:
1、正确代码中使用了fstream库函数
2、在使用cin.getline()时,连续使用cin.getline,转行会统一处理,但是当从cin转到cin.getline()时,需要清除缓冲区里的转行
正确代码:
# include <cstdio>
# include <ctime>
# include <cmath>
# include <iostream>
# include <fstream>
# include <cstring>
#define fin cin
#define fout cout
using namespace std;
//ifstream fin("in.txt");
//ofstream fout("out.txt");
char l1[200],l2[200];
char s1[200],s2[200],s3[200],s4[200],s5[200];
int main()
{
int n;
fin>>n;
fin.getline(l1,200);//清除缓冲区中的换行
while(n){
n--;
strcpy(l1,"");
strcpy(l2,"");
strcpy(s1,"");
strcpy(s2,"");
strcpy(s3,"");
strcpy(s4,"");
strcpy(s5,"");
fin.getline(l1,200);
fin.getline(l2,200);
int times;
int i,j;
for(i=0;i<strlen(l1);i++){
if(l1[i]=='<') break;
s1[i]=l1[i];
}
s1[i++]='\0';
for(j=0;i<strlen(l1);i++,j++){
if(l1[i]=='>') break;
s2[j]=l1[i];
}
s2[j]='\0';
i++;
for(j=0;i<strlen(l1);i++,j++){
if(l1[i]=='<') break;
s3[j]=l1[i];
}
s3[j]='\0';
i++;
for(j=0;i<strlen(l1);i++,j++){
if(l1[i]=='>') break;
s4[j]=l1[i];
}
s4[j]='\0';
i++;
for(j=0;i<strlen(l1);i++,j++){
s5[j]=l1[i];
}
s5[j]='\0';
/*
fout<<"s1= "<<s1<<endl;
fout<<"s2= "<<s2<<endl;
fout<<"s3= "<<s3<<endl;
fout<<"s4= "<<s4<<endl;
fout<<"s5= "<<s5<<endl;
fout<<"end ABCD"<<endl<<endl;
//*/
fout<<s1<<s2<<s3<<s4<<s5<<endl;
for(int j=0;j<strlen(l2);j++){
if(l2[j]=='.') break;
fout<<l2[j];
}
fout<<s4<<s3<<s2<<s5<<endl;
}
// fout<<clock()*1.000/CLOCKS_PER_SEC<<endl;
return 0;
}