/*水题,但由于语言基础不牢导致了几次RE
主要原因在于其中有一行的fflush函数是非标准库函数
应该用getchar()除去缓冲区的换行符
核心算法为遍历整个字符串,记录下‘<’‘>’的四个相对位置
然后依据位置逐个输出
*/
#include "stdio.h"
#include "string.h"int main()
{
int n;
int len1,len2;
char a[200],b[200];
int p[7];
int j,i;
//freopen("out.txt","w",stdout);
scanf("%d",&n);
//fflush(stdin);
getchar();for(i=0;i<n;i++)
{
gets(a);
gets(b);
len1=strlen(a);
len2=strlen(b);
int flag=0;
//printf("%d\n",len1);
for(j=0;j<len1;j++)
{
p[4]=len1;
if(flag==0&&a[j]=='<'){p[0]=j;flag++;}
if(flag==1&&a[j]=='>'){p[1]=j;flag++;}
if(flag==2&&a[j]=='<'){p[2]=j;flag++;}
if(flag==3&&a[j]=='>'){p[3]=j;flag++;}
if(flag==4&&a[j]=='\n'){p[4]=j;flag++;}
}
//printf("%d %d %d %d %d %d\n",p[0],p[1],p[2],p[3],p[4],p[5]);
for(j=0;j<len1;j++)
{
if(j!=p[0]&&j!=p[1]&&j!=p[2]&&j!=p[3])
printf("%c",a[j]);
}
printf("\n");
for(j=0;b[j]!='.';j++)
{
printf("%c",b[j]);
}
for(j=p[2]+1;j<p[3];j++)
printf("%c",a[j]);
for(j=p[1]+1;j<p[2];j++)
printf("%c",a[j]);
for(j=p[0]+1;j<p[1];j++)
printf("%c",a[j]);
for(j=p[3]+1;j<p[4];j++)
printf("%c",a[j]);
if(i!=n-1);
puts("");
}
return 0;
}
本文通过一个具体的示例,展示了如何使用C语言处理字符串中的特定符号,并重新组织字符串的顺序。重点介绍了如何避免使用非标准库函数,如fflush,并推荐使用getchar()来清除输入缓冲区中的换行符。此外,还详细说明了遍历字符串并记录关键符号位置的方法。
1060

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



