0$房天下问答|20分求一道C++问题~ 急....关于指针的$https://m.fang.com/ask/ask_1795916.html$https://static.soufunimg.com/common_m/m_public/201511/images/asksharedefault.png
packc/pages/ask/detail/detail?askid=1795916
-
20分求一道C++问题~ 急....关于指针的
//编写函数int index(char*s, char *t),返回字符串t在s中出现的最左边的位置,如果s中没有t则,返回-1//如键盘输入char*s=“abcdefg”;char*t=“cde”;则index(s,t)返回2;若输入char*t=“dcb”;则index(s,t)返回-1;我编好的程序如下,现在对index函数有点问题,就是返回值为2的怎么编呢?如果答案好的话 我会追分的#include<iostream>using namespace std;int index(char *s,char *t){ int flag=0; for(int i=0;i<strlen(s);i++) { for(int j=0;j<strlen(t);j++) if(s[i+j]==t[j]) {flag++;} if(flag==strlen(t)) return i+1; else flag=0; } return -1; } void main(){ char a[9],b[6]; char *s,*t; s=a;t=b; cout<<"请输入9个字符的字符串a和6个字符的字符串b"<<endl; for(int i=0;i<9;i++) cin>>a[i]; for(int i=0;i<6;i++) cin>>b[i]; int f; f=index(s,t); if(f==-1) cout<<"a字符串中没有b"<<endl; if(f==2) cout<<"a字符串中有b"<<endl;}
更多
共1个回答
-
-
-
听筝品韵
丨Lv 0
你的程序中判断if(f==2)是个错误的判断语句,因为出现的位置是不确定的。应该用else if;如果没有时f==-1;有就把f打印出来。代码如下:const char * _strstr(const char *src, const char *needle){ const char *p1, *p2; p1 = src; p2 = needle; if(src!=NULL || needel!=NULL ) { return NULL; } while (*src != '\0' && *needle != '\0') { if (*src++ != *needle++) { needle = p2; src = ++p1; //从下一个字符开始搜索needle } } if (*needle == '\0') return p1; return NULL;}
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。

关注成功