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

}

最后程序的运行结果:

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

时间: 2024-12-27 23:31:14

用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。的相关文章

用C语言编写函数,实现strlen计算字符串长度的功能

本文介绍三种方法: 1.循环计数法,(设置一个计数器). 2.递归法,(函数调用自身进行计算) 3.指针-指针法,(库函数使用的是此方法) 现在列入程序: 方法1: /* 计数法 */ int my_strlen(char *p) { int number = 0; while (*p) { number++; p++; } return number; } 方法2: /* 递归法 */ int my_strlen(char *str1) { if (*str1 != '\0') { str1+

C 语言实例 - 计算 int, float, double 和 char 字节大小。

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小. sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++.--等,它并不是函数. sizeof 操作符以字节形式给出了其操作数的存储大小. #include <stdio.h>int main(){    int integerType;    float floatType;    double doubleType;    char charType;    // sizeof

编写函数int count_number_string(char str[])和函数int maxnum_string(char str[])

题目如图: 这里不再赘述 代码: //字符串中统计与查询 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 1000 char Str[MAXN]; /* *寻找字符串中最大的整数 * */ int maxnum_string(char str[]) { int i = 0, n = 0, maxNum = 0; while(str[i] != '\0') { if(

用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。

函数功能: 使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,第一个参数"-a"选项执行加法,"-s"选项执行减法,"-m"选项执行乘法,"-d"选项执行除法,后面两个参数为操作数. 思考: 三个参数中两个操作数不用处理,直接传入即可,而对于第一个操作数就需要处理了,以保证传入的参数是"'-a','-s','-m','-d'",以便于处理计算,第一步将操作符号转化为上述赋好,然后将参数以及操

c语言检测文件是否存在int __cdecl access(const char *, int);

最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者近来使用winapi比较多,于是顺便搜索了msdn,找到了一个函数:PathFileExists BOOL PathFileExists( _In_ LPCTSTR pszPath ); 以下是笔者最初的方法,windows api原则上提供的函数应该是最合理高效的,起码这个方法在windows平台

【C语言】为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。

/*<p>为下面的函数原型编写函数定义:</p><p>int ascii_to_integer(char *str);</p><p>这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数.</p><p><span style="font-family: Arial, Helvetica, sans-serif;">如果字符串参数包含了任何非数字字符,函数就返回

编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0

/* 编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0 */ #include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast"

为下面的函数原型编写函数定义:int ascii_to_integer(char *str)

为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数.如果字符串参数包含了任何非数字字符,函数就返回零.请不必担心算数溢出. 提示:这个技巧很简单:你每发现一个数字,把当前值乘以10,并把这个值和新的数字所代表的值相加.字符指针减去'0'即将其对应的ASCII码值转换为整型. #include <stdio.h> int ascii_to_integer(char

(不包括\0) 编写一个int string_len(char *s), 返回字符串s的字符长度

#include <stdio.h> /* (不包括\0) 编写一个int string_len(char *s), 返回字符串s的字符长度 */ int string_len(char *s); int main() { //char *name = "itcast"; // 男 \u434\u4343\u434 int size = string_len("tre777"); printf("%d\n", size); retur