解题思路:

                删除的原理就是数组的左移,然后在末尾加上终止符'\0'防止冗余重复,删除空格的原理一样

                区分大小写的实现方法就是用或‘||’符号,通过ASCII码加或减32来达到大小写转换的目的,判断三次。


注意事项:

                如果主串遍历到的字符等于子串的第一个字符,则开始if判断 ,此时i的值会变化,为了方便之后的回取,用临时变量tmp记录i的值,判断结束后再使i重新                 回到判断前的值,以继续判断。

参考代码:

#include<cstdio>//为了快! 
#include<cstdlib>
#include<cstring>
int main(){
    char del[20];
    gets(del);//首先输入待判断字符串 
    char str[200];    
    while(gets(str)){//第一层while判断这一行输入的字符串 
        int i=0;
        while(i<strlen(str)){//第二层while判断逐个字符 
            //如果主串遍历到的字符等于子串的第一个字符,则开始if判断 
            if(str[i]==del[0]||str[i]-32==del[0]||str[i]+32==del[0]){ 
            int tmp=i;//记录起始i的位置,方便之后回取。 
            int count=0,condition=0,k=0;
            for(int j=0;j<strlen(del);j++){
                if(str[i]==del[k]||str[i]-32==del[k]||str[i]+32==del[k]){
                    count++;//count为主串与子串匹配的数量 
                }
                i++;k++;
            }
            if(count==strlen(del)) condition=1;//如果count等于子串长度,则匹配成功 
            if(condition==1){//匹配成功时 
                i=tmp;//回到之前起始i的位置 
                int n=strlen(del);//n为子串长度 
                int j;
                while(n--){//循环n次 
                    for(j=i;j<strlen(str)-1;j++){
                    str[j]=str[j+1]; //从i开始数组整体向左移1个,重复n次 ,从而删除子串 
                    }
                    str[j]='\0';
                }        
            }
            else i=tmp;//回到之前起始i的位置 
        }
        if(str[i]==' '){//删除空格 
            int j;
            for(j=i;j<strlen(str)-1;j++){//一样,数组左移,以达到删除效果 
                str[j]=str[j+1];
            } 
            str[j]='\0';//别忘了在末尾加终止符防止冗余重复。 
        }
        
        i++;//开始下一个字符判断 
        }
        puts(str);//输出当前行,准备开始下一行字符串的判断 
    }
    return 0;//华丽结束程序! 
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论