题目大意:对输入的每一对字符串进行处理:
输出有两行(1)第一行不要把"<"">"的符号输出 (2)第二行用(1)上面的<>隔开的相应字符串拼成的结果代替"..."输出
思路:模拟的有点恶心阿,关键是对<>分开的字符串进行处理,我的思路是先记录好下标,然后根据下标把字符串取出来,然后最后整体输出结果即可
Ac Program:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char l1[105];
char l2[105];
char c1[105],c11[105];
char c2[105];
int c1Num,c2Num,c11Num;
void gn(char ch[],int s,int t)
{
for(int i=s+1;i<t;i++)
{
c11[c11Num++]=ch[i];
}
}
void fn()
{
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
memset(c11,0,sizeof(c11));
int len1=strlen(l1);
int len2=strlen(l2);
c1Num=0,c2Num=0,c11Num=0;
//处理第一行
for(int i=0;i<len1;i++)
{
if(l1[i]!='<' && l1[i]!='>')
c1[c1Num++]=l1[i];
}
int t1,t2,t3,t4,tmp;//记录位置
bool f1=true,f2=true;
for(int i=0;i<len1;i++)
{
if(f1&&l1[i]=='<')
{
t1=i;
f1=false;
}
else if(!f1&&l1[i]=='<')
{
t3=i;
}
else if(f2&&l1[i]=='>')
{
t2=i;
f2=false;
}
else if(!f2&&l1[i]=='>')
{
t4=i;
}
}
gn(l1,t3,t4);//找出相应符号段的字母,保存在c11里面
gn(l1,t2,t3);
gn(l1,t1,t2);
gn(l1,t4,len1);
//处理第二行
for(int i=0;i<len2;i++)
{
if(l2[i]=='.')break;
c2[c2Num++]=l2[i];
}
}
void output()
{
printf("%s\n",c1);
printf("%s",c2);
printf("%s\n",c11);
}
int main()
{
//freopen("f.out1.txt","w",stdout);
int nPairs;
scanf("%d",&nPairs);
getchar();//吃掉回车要注意位置,最好找word找思路
while(nPairs--)
{
gets(l1);
gets(l2);
fn();
output();
}
//system("pause");
return 0;}