/*
* 解题思路:
* 这道题题意很好懂、输出直接按范例输出就好、没有什么特别要注意的陷阱、控制好就ok ~
*/
#include<stdio.h>
#include <string.h>
#define A 10000
#define B 5
int main( )
{
int t;
int p,q,r;
int i,j;
int flag;
int pos[ B ],len[ B ];
char c;
char s[ A] ,ss[A ];
char str[ B ][ A ];
scanf("%d",&t);
getchar( );
while( t-- )
{
p = q = r = flag = 0;
memset( pos,0,sizeof(pos));
while( ( c = getchar( ) ) !='\n' )
{
s[ p++ ] = c;
if( c=='<' )
{
flag = 1;
pos[ q ] = p-1;
}
else if( c=='>' )
{
flag = 0;
len[ q ] = r;
q++;
r=0;
}
else if( flag )
str[ q ][ r++ ] = c;
}
for( i=0;i<p;i++ )
if( i==pos[ 0 ] || ( i==( pos[ 0 ] +len[ 0 ] + 1) ) || i == pos[ 1 ] || (i == ( pos[ 1 ] + len[ 1 ] + 1 ) ) ) continue;
else printf("%c",s[ i ] );
puts("");
i =j =flag = 0;
while( (c = getchar() ) !='\n' )
{
ss[ i++ ] = c;
if( c == '.' && !flag )
{
j = i-1;
flag = 1;
}
}
for( i=0;i<j;i++ )
printf("%c",ss[ i ] );
for( i=pos[ 1 ]+1 ;i<pos[1]+len[ 1 ]+1;i++ )
printf("%c",s[ i ] );
for( i=pos[ 0 ]+len[ 0 ]+2;i<pos[ 1 ] ;i++ )
printf("%c",s[ i ] );
for( i=pos[ 0 ]+1;i<pos[ 0 ]+len[ 0 ]+1;i++ )
printf("%c",s[ i ] );
for( i=pos[ 1 ]+len[ 1 ]+2;i<p;i++ )
printf("%c",s[ i ] );
puts("");
}
return 0;
}
本文详细解析了一段复杂的代码逻辑,通过控制流程和字符串处理技巧,实现了输出的优化和定制。涵盖了输入读取、字符识别、字符串操作等多个方面,展示了在实际编程中解决特定问题的有效方法。
2万+

被折叠的 条评论
为什么被折叠?



