首先,分析一下程序的思路:
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;
}
}
最后程序的運行結果:
可以看出效果不錯,不管是單詞還是字符串,都滿足要求。