主题:来个高手!帮忙看下这个程序的问题出在那了
题目是这样的:输入两个字符串,求出第二个字符串是从第一个字符串的倒数第几个开始
如:字符串一是:"abcdef" 字符串二是"de",那么程序就是倒数第3个,如果没有在第一个字符串中找到第二个字符串,那么就输出-1;前提是不用string头文件;
下面是小弟的代码,代码完成了题目的要求,但是有一个问题
就是当你第一个字符串输入两个相同的字符串并且字符串长度大于3时,不论第二个字符串是什么,都会输出-1
如 字符串一是"abcabccba" 字符串二是"cba"那么就会输出-1 ;我想了半晚上没想出为什么 那位大侠帮忙解决下
#include <iostream>
using namespace std;
int fun(char *ps,char *pt)
{
int len_ps=0;
int len_pt=0;
int sum=0;
int count;
while(*ps)
{
ps++;
len_ps++;
}
while(*pt)
{
pt++;
len_pt++;
}
ps=ps-len_ps;
pt=pt-len_pt;
for (int i=0;i<len_ps;i++)
{
for (int j=0;j<len_pt;j++)
{
if (ps[i+j]==pt[j])
{
sum++;
count=i;
}
else
break ;
}
}
if (sum==len_pt)
{
return len_ps-count;
}
else
return -1;
}
int main()
{
char *psc=new char[100];
char *ptc=new char[100];
cout<<"请输入一个字符串:"<<endl;
cin>>psc;
cout<<"请输入要查询的字符串:"<<endl;
cin>>ptc;
int pf;
pf=fun(psc,ptc);
if (pf!=-1)
{
cout<<"你所查询的字符串位于倒数第"<<pf<<"个!!!"<<endl;
}
else
cout<<pf<<endl;
return 0;
}
如:字符串一是:"abcdef" 字符串二是"de",那么程序就是倒数第3个,如果没有在第一个字符串中找到第二个字符串,那么就输出-1;前提是不用string头文件;
下面是小弟的代码,代码完成了题目的要求,但是有一个问题
就是当你第一个字符串输入两个相同的字符串并且字符串长度大于3时,不论第二个字符串是什么,都会输出-1
如 字符串一是"abcabccba" 字符串二是"cba"那么就会输出-1 ;我想了半晚上没想出为什么 那位大侠帮忙解决下
#include <iostream>
using namespace std;
int fun(char *ps,char *pt)
{
int len_ps=0;
int len_pt=0;
int sum=0;
int count;
while(*ps)
{
ps++;
len_ps++;
}
while(*pt)
{
pt++;
len_pt++;
}
ps=ps-len_ps;
pt=pt-len_pt;
for (int i=0;i<len_ps;i++)
{
for (int j=0;j<len_pt;j++)
{
if (ps[i+j]==pt[j])
{
sum++;
count=i;
}
else
break ;
}
}
if (sum==len_pt)
{
return len_ps-count;
}
else
return -1;
}
int main()
{
char *psc=new char[100];
char *ptc=new char[100];
cout<<"请输入一个字符串:"<<endl;
cin>>psc;
cout<<"请输入要查询的字符串:"<<endl;
cin>>ptc;
int pf;
pf=fun(psc,ptc);
if (pf!=-1)
{
cout<<"你所查询的字符串位于倒数第"<<pf<<"个!!!"<<endl;
}
else
cout<<pf<<endl;
return 0;
}