zoukankan      html  css  js  c++  java
  • 用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个元素是'',即字符串的结束符,停止执行;否则,重复步骤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!='')                                        //对p字符串逐一进行判别
          {

                a=p;                                                 //用a,b分别替代p和q
                b=q;

                while(*b!=''&&*a!=''&&*b==*a)     //如果对应的元素相等,且这两个字符串都没有到结束符
                {
                       a++;
                       b++;
                }

               if(*b=='')                                      //如果匹配的话,那么此时b对应是''结束符
                     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;
            }

    }

    最后程序的运行结果:

    可以看出效果不错,不管是单词还是字符串,都满足要求。

  • 相关阅读:
    从零开始学习OpenCL开发(一)架构
    Android平台利用OpenCL框架实现并行开发初试
    g++ error: expected nested-name-specifier before 'XXX'
    Linux命令之xargs的分析及隐患
    Linux目录结构
    Linux系统目录/bin /sbin /usr/bin /usr/sbin和/lib /usrlib的一些分析
    rpm包制作
    git与svn的使用比较
    SVN的错误: working copy locked
    Linux远程桌面
  • 原文地址:https://www.cnblogs.com/cxmhy/p/4121728.html
Copyright © 2011-2022 走看看