- 论坛徽章:
- 0
|
一道难题,书上的例题,输入两个字符串a和b,判断字符串b是否是字符串a的字串,是则输出b串在a串中的开始位置,否则输出-1,例如,a="abcdef",若b="cd",择输出3,若串b="ce",则输出-1,
(这道题经上机操作通过,但是有些问题我不理解,寻求帮助)问题如下:
1, 题中if(flag==-2){flag=i+1;break;}是属于i循环还是j循环?
2,{flag=-1;break;}执行完后执行if(flag==-2)吗?
3,如果这句if(a[i+j]!=b[j]为不满足)即if(假),是执行if(flag==-2)还是继续进行j循环?
4,我觉得i循环以外的flag=-1;(第10行)可以省略,经上机,通过,你认为呢
# include"stdio.h"
# include"string.h"
main()
{
char a[80],b[40];
int na,nb,i,j,flag;
gets(a);
gets(b);
na=strlen(a),nb=strlen(b);
flag=-1;
for(i=0;na-i>;=nb;i++)
{flag=-2;
for(j=0;j<nb;j++)
if(a[i+j]!=b[j])
{flag=-1;break;}
if(flag==-2)
{flag=i+1;break;}}
printf("%s \n %s \n %d \n",a,b,flag);
} |
|