/*题目大意:
给一对字符串
按原样输出除了'<','>'的第一行字符串
输出第二行时,交换两个<>的内容*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*第一个问题是把字符串的'<','>'去掉,然后原样输出*/
void toPoetry(const char szStr1[],const char szStr2[])
{
//char* iPos = strchr(szStr,'<');
int iLength1 = strlen(szStr1);
int iLength2 = strlen(szStr2);
int iPos[4],iCount = 0;
int i;
for(i = 0; i < iLength1; i++)
{
//查找'<','>'的位置
if(szStr1[i] == '<' || szStr1[i] == '>')
iPos[iCount++] = i;
if(szStr1[i] != '<' && szStr1[i] != '>')
printf("%c",szStr1[i]);
}
printf("\n");
// printf("%d%d%d%d",iPos[0],iPos[1],iPos[2],iPos[3]);
for(i = 0; i < iLength2-3; i++)
printf("%c",szStr2[i]);
//首先输出iPos[2]~iPos[3]
for(i = iPos[2]+1; i < iPos[3]; i++)
printf("%c",szStr1[i]);
//输出iPos[1]~iPos[2]
for(i = iPos[1]+1; i < iPos[2]; i++)
printf("%c",szStr1[i]);
//输出iPos[0]~iPos[1]
for(i = iPos[0]+1; i < iPos[1]; i++)
printf("%c",szStr1[i]);
//输出iPos[3]~iPos[2]
for(i = iPos[3]+1; i < iLength1; i++)
printf("%c",szStr1[i]);
printf("\n");
}
int main()
{
int iCase;
scanf("%d",&iCase);
char szStr1[255];
char szStr2[255];
getchar();
while(iCase--)
{
gets(szStr1);
gets(szStr2);
toPoetry(szStr1,szStr2);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交