做东北大学oj的一些问题 不知道哪里出错或者没考虑全面

在做东北大学oj转化一题时,测试点有一个始终无法通过,不明白错在了什么地方

img

#include
#include
int main (void)
{
    char str[1001]={0};    //输入原始字符串
     
    char c[10] ,ch[101];    //一个收录操作方式 另一个收录改变的字符串 
    char cv[3][10]={"reverse","print","replace"};
    int n=0,a=0,b=0;       //n表示进行操作次数 ab为位数 
    scanf("%s",str);     //收录
    getchar(); 
    scanf("%d",&n);      
    getchar(); 
    while(n--){
        scanf("%s",c);
        
        if(!strcmp(c,cv[0])){
            scanf("%d %d",&a,&b);
            getchar();
            int d=(a+b)/2;
            while(a<=d){
                char temp=str[a];
                str[a]=str[b];
                str[b]=temp;
                a++;
                b--;
            }
        }
            
                
        else if(!strcmp(c,cv[1])){
            scanf("%d %d",&a,&b);
            getchar();
            for(int k=a;k<=b;k++){
                printf("%c",str[k]);
            }
            printf("\n");
        }        
            
            
        else if(!strcmp(c,cv[2])){
            scanf("%d %d %s",&a,&b,ch);
            getchar();
            for(int m=0;m1;m++){
                str[a+m]=ch[m];
            }
        }
                
        
    }
    return 0;
 } 

测试点报错

img

尝试了多次手敲数据 未发现异常 整体思路应该没问题
希望有人指出问题 因为最后这个测试点输出结果与题目要求有明显区别

请问这个代码只有一个测试点没有通过吗?
可是我看只有print命令进行了字符串输出,另外两个reverse和replace都没有输出,这个没问题吗?
还有reverse和replace的操作都是直接对原始字符串str进行操作,这样后面的命令会叠加,而不是独立的命令,输出应该也会有问题