编写一个程序,对给定字符串str执行一系列命令该命令是以下命令之一:打印a b : 从str的第a个字符打印到第b个字符反转a b : 从str的第a个字符反转到第b个字符替换a

题面

编写一个程序,对给定字符串str执行一系列命令

该命令是以下命令之一:

  • 打印a b : 从str的第a个字符打印到第b个字符
  • 反转a b : 从str的第a个字符反转到第b个字符
  • 替换a b p : 将str的第a个字符到第b个字符转换成 p

请注意,str从0开始。

输入

在第一行中,给出了字符串 str, str由小写字母组成。
第二行给出了命令数量 q 。
在接下来的 q 行中,每个命令都以上述格式给出。

输出

对于每个输出命令,在一行中输出一个字符串。

数据范围

1 ≤ length of str ≤ 1000
1 ≤ q ≤ 100
0 ≤ a ≤ b < length of str
对于替换要求,b-a+1=length of p

输入样例

abcde

3

replace 1 3 xyz

reverse 0 2

print 1 4

输出样例

xaze

#include<stdio.h>
int main()
{
    int i, j;
    char* order[3] = { "replace","reverse","print" };
    char str[2000] = { '\0' };
    char s[200][20] = { '\0' };
    int t[200][2];
    char z[200][2000] = {'\0'};
    int q = 0;
    scanf("%s", str);
    scanf("%d", &q);
    getchar();
    for (i = 0; i < q; i++)
    {
        scanf("%s", s[i]);
        scanf("%d%d", &t[i][0],&t[i][1]);
        getchar();
        if (!strcmp(s[i], order[0]))
        {
                scanf("%s",z[i]);
               // getchar();
        }
       
    }

    for (i = 0; i < q; i++)
    {
        if (!strcmp(s[i], order[0]))
        {
            int num = t[i][1] - t[i][0] + 1;
            for (j = 0; j < num; j++)
            {
                str[j + t[i][0]] = z[i][j];
            }
        }
        else if (!strcmp(s[i], order[1]))
        {
            int num = t[i][1] - t[i][0] + 1;
            for (j = 0; j < num/2; j++)
            {
                char tmp = str[t[i][1]-j];
                str[t[i][1]-j] = str[t[i][0]+j];
                str[t[i][0]+j] = tmp;
            }

         }
        else if (!strcmp(s[i], order[2]))
        {
            int num = t[i][1] - t[i][0] + 1;
            for (j = 0; j < num; j++)
            {
                printf("%c", str[j + t[i][0]]);
            }
            printf("\n");
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值