题意:就是把两个<>中的前后互换
思路:就是比较麻烦,开四个数组分别存四个字符串,之后在拼接。记得最后要加上' \0 '。
#include<stdio.h>
#include<string.h>
int main(){
int n, flag, k, l;
char s[2][105];
scanf("%d", &n);
getchar();
while (n--){
char str[105], ss[105];
char s1[20], s2[20], s3[20] ,s4[20];
k = 0, flag = 1, l = 0;
for(int i = 0; i < 2; i++)
gets(s[i]);
int len = strlen(s[0]);
for(int i = 0; i < len; i++){
if (s[0][i] == '<' || s[0][i] == '>')
continue;
ss[l++] = s[0][i];
}
ss[l] = '\0';
l = 0;
for(int i = 0; i < strlen(s[1]); i++){
if (s[1][i] == '.')
break;
str[l++] = s[1][i];
}
str[l] = '\0';
for(int i = 0; i < len; i++){
if (s[0][i] == '<'){
k = i + 1;
break;
}
}
int j = 0;
for(int i = k; i < len; i++){
if (s[0][i] == '<'){
k = i + 1;
break;
}
if (s[0][i] == '>'){
s1[j] = '\0';
j = 0;
flag = 0;
continue;
}
if (flag)
s1[j++] = s[0][i];
else
s2[j++] = s[0][i];
}
s2[j] = '\0';
flag = 1;
j = 0;
for(int i = k; i < len; i++){
if (s[0][i] == '>'){
s3[j] = '\0';
flag = 0;
j = 0;
continue;
}
if (flag)
s3[j++] = s[0][i];
else
s4[j++] = s[0][i];
}
s4[j] = '\0';
puts(ss);
printf("%s%s%s%s%s\n", str, s3, s2, s1, s4);
}
return 0;
}
本文介绍了一种使用C语言实现的算法,该算法能够交换输入字符串中<>符号内的前后部分,并详细展示了如何通过多个数组来存储并最终拼接这些字符串片段的方法。
338

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



