C语言翻转字符串练习

题目描述
给定一个无重复字符的字符串 s 和这个字符串中的两个字符 s [i],s [j], 输出翻转 s [i]~s [j] 后的字符串。

输入描述
第一行一个整数 T,代表测试数据组数。 之后每组的第一行输入一个字符串 s,不包含空格,3<=lenth (s)<=500。 第二行输入两个字符 s[i],s[j] (0<=i<j<=lenth(s)-1)。

输出描述
一行,输出所得字符串。(每组输出之间需要换行,末尾不需要多余空格)

样例输入
2

abcde

b d

123ABCdef

2 d

样例输出
adcbe

1dCBA32ef

供参考


#include <stdio.h>
#include <string.h>

int main(void)
{
    int T, i;
    char s[500];
    char s1, s2, s0;
    char *a, *b;
    printf("Please enter T: ");
    scanf("%d", &T);
    for (i = 0; i < T; i++)
    {
        scanf("%s\r%c %c", s, &s1, &s2);
        // ret = char *strchr(const char *str, int c)
        // 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
        // 返回值ret应为char指针
        // 如果输入abcde和b d
        a = strchr(s, s1); // 'bcde'
        b = strchr(s, s2); // 'de'
        // 交换b和d
        s0 = a[0];
        a[0] = b[0];
        b[0] = s0;
        puts(s);
    }
    return 0;
}