360极速浏览器电脑版:编程问题,第一串字符是否包含第二串字符??

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 02:36:55
看看那里的问题~!!迷茫了!~

#include<stdio.h>
#include<string.h>
#define N 20
void main()
{
char str[N],art[N],n[N];
int num=0,i,j=0,m=0,k=0;
printf("输入两串字符\n");
gets(str);
gets(art);
if(strcmp(str,art)>0)
{
num=strlen(art);
for(i=0;i<N;i++)
{
if(str[i]==art[0])
{ k=i;
for(j=k,i=0;i<num&&j<num+k;j++,i++)
n[i]=str[j];
if(strcmp(art,n)==0)
printf("在第%d位上",k+1);
continue;
}
else
break;
}
printf("第一串字符包含第二串字符\n");
}
else
printf("第一串字符不包含第二串字符\n");
}

1。首先strcmp比较的是字符串的ASCII码值,而不是字符串长度,比如"world"大于"World","d"大于"Day".要比较长度可用strlen计算
2。for(j=k,i=0;i<num&&j<num+k;j++,i++) 改变了i的值,会导致外面一层的for循环出问题,此处的i要换个变量
3。n[N] 保存的临时字符串应该以'\0'结尾
4。你对continue,break的理解好像也有问题,continue语句只是结束本次的循环,而不是终止整个的执行,接着进行下一次是否执行循环的判定。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。