⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 字符串子串 267.cpp

📁 我正在学习C编程
💻 CPP
字号:
#include "stdio.h"
#include "string.h"
int main()
{
	printf("\n\t\t输入两个字符串,判断是否子串\n");
	printf("─────────────────────────────────\n");
	while(1)
	{
		char a[50],b[50];    int i,j,flag=-1;
		size_t na,nb;
		printf("  输入第一个字符串:  ");  gets(a); //入一串存入a组,不用scanf("%s",a);
		printf("  输入第二个字符串:  ");  gets(b); //入一串存入b组,不用scanf("%s",b);
		na=strlen(a); //获a串长
		nb=strlen(b); //获b串长
		if(na>=nb)    //如a串长>b串长
		{
			for(i=0;na-i>=nb;i++) //a串剩余字符数<b串长度时,退出循环
			{
				flag=0;
				for(j=0;j<nb;j++) //比较b串与a串中第i个字符开始的串
				{
					if(a[i+j]!=b[j]){flag=-1;break;} //当前字符不同,置标记-1,退出循环
				}
				if(flag==0){flag=i+1;break;} //如标记未修改,已找到子串,置标记flag为子串在源串中的起始位置,退出循环
			}
			if(flag==-1){printf("  串2“%s”不是串1“%s”的子串.\n",b,a);}
			else {printf("  串2“%s”是串1“%s”的子串,起始位置为: %d\n",b,a,flag);}
		}
		else if(na<nb)  //如a串长<b串长
			{
				for(int i=0;nb-i>=na;i++) //b串剩余字符数<a串长度时,退出循环
				{
					flag=0;
					for(int j=0;j<na;j++) //比较a串与b串中第i个字符开始的串
					{
						if(b[i+j]!=a[j]){flag=-1;break;} //当前字符不同,置标记-1,退出循环 
					}
					if(flag==0){flag=i+1;break;} //同上
				}
				if(flag==-1){printf("  串1“%s”不是串2“%s”的子串.\n",a,b);}
				else /*if(flag==0)不要此条件*/	{printf("  串1“%s”是串2“%s”的子串,起始位置为: %d\n",a,b,flag);}
			}
		printf("\n  是否继续输入吗?是则回车,否则输入‘空格’回车 ");
		if(getchar()==' '){break;}
		else {while(getchar()!='\n'){;}}
	}
	return 0; //?
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -