解题思路:

注意事项:

参考代码:


第一种强行解题,硬解:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[200];
	char b[200];
	scanf("%s%s",a,b);
	int len_a=strlen(a);
	int len_b=strlen(b);
	int count=0,k=0;//用k区分三种结果
	if(len_a>len_b)
	{
	    for(int i=0;i<len_a;i++)
	    {
	        count=0;//用于在每次开始比较新的字符之前将 count 的值重置为 0。这样可以确保每次比较都从子串的起始位置开始
	        while(a[i]==b[count]&&count<len_b)//这里别忘了对count做限制,要小于len_b
	        {
	            i++;
	            count++;
	        }
	        if(count==len_b)
	        {
	            k=1;
	        }
	    }
	}
	else
    {
        for(int i=0;i<len_b;i++)
	    {
	        count=0;
	        while(b[i]==a[count]&&count<len_a)
	        {
	            i++;
	            count++;
	        }
	        if(count==len_a)
	        {
	            k=2;
	        }
	    }
    }
    if(k==1)
    {
        printf("%s is substring of %s",b,a);
    }
    else if(k==2)
    {
        printf("%s is substring of %s",a,b);
    }
    else
    {
        printf("No substring");
    }
	return 0;
}


第二种使用库函数strstr(),用于在一个字符串中查找另一个字符串的第一次出现的位置,对函数做些解释:

函数原型:

char *strstr(const char *haystack,const char *needle);//简单来说,第二个参数为第一个参数的子字符串

函数参数

haystack:要在其中查找的字符串

needle: 要查找的子字符串


函数返回值

如果子字符串needle 在字符串haystack 中找到,则返回第一次出现的位置的指针

如果子字符串needle 未在字符串haystack 中找到,则返回NULL


代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[200],b[200];
	scanf("%s%s",a,b);
	int len_a=strlen(a);
	int len_b=strlen(b);
	char *result;
	int k=0;
	if(strstr(a,b)!=NULL)
	{
	    result=strstr(a,b);//这句话还有下面的一样的,都是多余的,因为我本来想通过指针递增输出子字符串,发现太麻烦了,就算了
	    k=1;
	}
	else if(strstr(b,a)!=NULL)
	{
	    result=strstr(b,a);
	    k=2;
	}
	else
	{
	    printf("No substring");
	}
	if(k==1)
	{
	    printf("%s is substring of %s",b,a);
	}
	else if(k==2)
	{
	    printf("%s is substring of %s",a,b);
	}
	return 0;
}



点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论