C语言题目:判别一个字符串是否是另一个字符串的子串,若是子串输出子串第一次出现的位置,若不是则输出-1
#include<stdio.h>intmain(){inti,j,m,n;chara[100],b[100];gets(a);gets(b);for(i=0;a[i]!...
#include<stdio.h>
int main()
{
int i,j,m,n;
char a[100],b[100];
gets(a);
gets(b);
for(i=0;a[i]!='\0';i++)
{
for(j=0;b[j]!='\0';j++)
{
if(a[i]==b[j])
{
for(m=i+1,n=j+1;b[n]!='\0'&&a[m]!='\0';m++,n++)
{
if(a[m]!=b[n])
printf("-1");break;
if(b[n+1]=='\0')
printf("%d\n",j);break;
}
}
}
}
return 0;
}
应该怎么改啊? 展开
int main()
{
int i,j,m,n;
char a[100],b[100];
gets(a);
gets(b);
for(i=0;a[i]!='\0';i++)
{
for(j=0;b[j]!='\0';j++)
{
if(a[i]==b[j])
{
for(m=i+1,n=j+1;b[n]!='\0'&&a[m]!='\0';m++,n++)
{
if(a[m]!=b[n])
printf("-1");break;
if(b[n+1]=='\0')
printf("%d\n",j);break;
}
}
}
}
return 0;
}
应该怎么改啊? 展开
1个回答
展开全部
#include<stdio.h>
int main()
{
int i,j;
char a[100],b[100];
gets(a);
gets(b);
for(i=0;a[i]!='\0';i++)
{
if ( a[i]==b[0] )
{
int k;
for(k=i+1,j=1;b[j]!='\0';j++,k++)
{
if ( a[k]!=b[j] )
break;
}
if ( b[j]=='\0' )
{
printf("%d\n", i );
break;
}
}
}
if( a[i]=='\0' )
printf("-1\n");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询