用c++語言編寫函數 int index(char *s,char * t),返回字符串t在字符串s中出現的最左邊的位置,如果s中沒有與t匹配的子串,則返回-1。類似於索引的功能。


首先,分析一下程序的思路

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;
        }

}

 

 

最后程序的運行結果:

 

可以看出效果不錯,不管是單詞還是字符串,都滿足要求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM