免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 959 | 回复: 1
打印 上一主题 下一主题

请求高手给与明示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-25 23:19 |只看该作者 |倒序浏览
一道难题,书上的例题,输入两个字符串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);
}

论坛徽章:
0
2 [报告]
发表于 2005-06-26 10:18 |只看该作者

请求高手给与明示

调整了一下程序格式:
  1. #include"stdio.h"
  2. #include"string.h"

  3. int main(void)
  4. {
  5.         char a[80],b[40];
  6.         int na,nb,i,j,flag;
  7.         gets(a);
  8.         gets(b);
  9.         na=strlen(a),nb=strlen(b);
  10.         flag=-1;
  11.         for(i=0;na-i>;=nb;i++)
  12.         {
  13.                 flag=-2;
  14.                 for(j=0;j<nb;j++)
  15.                 if(a[i+j]!=b[j])
  16.                 {
  17.                         flag=-1;
  18.                         break;
  19.                 }
  20.                 if(flag==-2)
  21.                 {
  22.                         flag=i+1;
  23.                         break;
  24.                 }
  25.         }
  26.         printf("%s \n %s \n %d \n",a,b,flag);
  27.         return 0;
  28. }
复制代码

1、缩进一下就知道了,是在外层循环的循环体中。
2、{flag=-1;break;} 执行后,程序跳出内层循环,而if(flag==-2)在外层循环的循环体中,所以会执行。
3、先必须完成内循环,才可执行外循环。所以是继续内循环。
4、不可去!假如a = "ab", b="abcd",显然,字符串b不是字符串a的子串,若去掉flag=-1,则结果会输出题目所要求的-1吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP