首先,分析一下程序的思路:
1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2;
2: i++;如果s的第i个元素是'\0',即字符串的结束符,停止执行;否则,重复步骤1。
接着,给出这个程序:
#include <iostream> //存放了输入输出流
#include <cstdio> //存放了puts和gets函数
using namespace std; //使用命名空间
int index(char *p,char *q) //函数的定义
{
char *a;char *b;
int num=1; //用来记载位置数
while(*p!='\0') //对p字符串逐一进行判别
{
a=p; //用a,b分别替代p和q
b=q;
while(*b!='\0'&&*a!='\0'&&*b==*a) //如果对应的元素相等,且这两个字符串都没有到结束符
{
a++;
b++;
}
if(*b=='\0') //如果匹配的话,那么此时b对应是'\0'结束符
return num;
num++; //位置加1,取下一个元素分析
p++;
}
return -1; //否则,返回-1
}
void main()
{
while(1) //可以用来无限次检测程序的结果
{
char *s=new char[100];
char *t=new char[50];
cout<<"请输入字符串s:"<<endl;
gets(s); //将获取到的字符串存入字符指针中
cout<<"请输入字符串t:"<<endl;
gets(t); //将获取到的字符串存入字符指针中
int n=index(s,t);
if(n==-1)
cout<<t<<"不在"<<s<<"中!"<<endl;
else
cout<<t<<"在"<<s<<"中左起第"<<n<<"个位置!"<<endl;
}
}
最后程序的运行结果:
可以看出效果不错,不管是单词还是字符串,都满足要求。