永发信息网

关于C++的编写问题!

答案:2  悬赏:30  手机版
解决时间 2021-07-18 04:56

函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:“cd”,st:“abcdefcd”,返回2。

#include"iostream.h"

#include"stdio.h"

void main()

{

char s1[80],s2[80];

_______________;

gets(s1);gets(s2);

if(_____________)

cout<<“子串在字符串中首次出现的下标:"<<index(s1,s2);

else

cout<<"找不到";

}

int index(char st[ ],char[ ])

{

int i,j,k;

for(i=0;st[i]!='\0';i++)

{

for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];____________);

if(sub[k]=='\0')______________;

}

return 0;

}

麻烦各位大哥大姐帮我填下空,并写出原因,谢谢了!

最佳答案

不存在返回值用-1表示比较好, 你最后返回0来表示不存在,如果有下标表示在第几个也行, 但不太符合C语言的习惯, 下标从0开始, 再者字符串匹配有许多算法, 这只是最简单直接算法, 下面是指针版本,返回要查找的模式在母串的第一次出现的指针, 用0表示失败没有找到



int index(char *s, char *t)


{



for(; *s != '\0'; s++)


{


for(char *k = s; *t != '\0' && *k == *t; t++, k++ )


;


if(*t == '\0')



return s;


}



return 0;


} 



全部回答
#include"iostream.h" #include"stdio.h" void main() { char s1[80],s2[80]; int index(char st[ ],char[ ]); // 函数声明 gets(s1);gets(s2); if( index( s1, s2 ) >= 0 ) // 返回>=0的数表示找到 cout<< "子串在字符串中首次出现的下标:"<<index(s1,s2); else cout<<"找不到"; } int index(char st[ ],char sub[ ]) { int i,j,k; for(i=0;st[i]!='\0';i++) { for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];++k, ++j ); // 递增比较确认相等 if(sub[k]=='\0') return i; // 如果k增加到sub[k] = '\0'也就是到达了sub的结尾,那么表示找到字串,返回起始下标i } return -1; // 没有找到返回-1 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
喜欢一定要说出来吗?
求个性三兄弟网名
适合初三数学几何训练的辅导书 、
瓜子 话梅之类的零食连锁店加盟网有哪些
谁能给我一个诺基亚铃声吉他版的下载地址?
环形荧光灯为什么慢慢灭了
梦幻株仙焚香谷门派属性怎么加
DNF到50级,应该去哪里升级?
如果你不能为她穿上嫁衣-请不要脱她的睡衣
诺基亚n81,6210S,哪个好?哪个反应快?
谁可以把“我们在成长”这首歌的歌词翻译成英
一般情况下同性更重要还是异性朋友更重要?
希腊神话中雅典娜是什么神?
农场用WG后果是什么?
噪音对人体的伤害有多大?
推荐资讯
关于九年级化学化合式与化合价的题
襁褓怎么读、是什么意思
八神最后死了没?
非专业会计证考级
5730XM行货报价和水货报价?
如果别人不理解我 我该怎么做?
炫舞吧有人说刷团只有在节奏模式下才可以是这
我手里有100多吨2800元收的废铁是重料,什么
阳光牧场今天怎么进不去
如何处理同学关系?班委
自主招生的数学和英语一般会考什么?
我的哈飞民意车 在行驶的时候老是一撮一撮的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?