niusouti.com

【单选题】3. 设有两个串p和q ,其中q是p的子串,求q在p中首次出现的位置的算法称为()。A.串的模式匹配B.求子串C.串联接D.求串长

题目

【单选题】3. 设有两个串p和q ,其中q是p的子串,求q在p中首次出现的位置的算法称为()。

A.串的模式匹配

B.求子串

C.串联接

D.求串长


相似考题
更多“【单选题】3. 设有两个串p和q ,其中q是p的子串,求q在p中首次出现的位置的算法称为()。”相关问题
  • 第1题:

    设有两个串p和q,求q在p中首次出现位置的运算称作

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


    正确答案:B
    解析:子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一,算法的基本思想是:从主串的开始字符起和模式的第一个字符比较,若相等则继续比较后续字符,否则从主串的下一个字符起再重新和模式的字符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。

  • 第2题:

    阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。

    【说明】

    本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。

    【代码】

    include<stdio.h>

    include<stdlib.h>

    include<string.h>

    char*replace(char *s1, char *s2,char *s3)

    { char *p, *q, *r, *s; int |2,|3, i=0;

    |2=strlen(s2);

    |3=strlen(s3);

    p=s1;

    while((p=strstr(p,s2))!=NULL)

    { i++; /* 统计s2串出现的次数*/

    (1);

    }

    i=(2);

    s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/

    p=s1;

    while(1)

    { q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/

    if(q!=NULL)

    { i=q-p;

    (3);

    r+=i;

    (4);

    r+=|3;

    p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,

    为下一次循环做好准备*/

    }

    else /*q为空,表示剩余的s1串中已经没有s2*/

    { (5);

    break; /*终止循环*/

    }

    }

    return(s); /*返回指向所形成的新串的指针*/

    }

    void main()

    { char *a="sabcababde", *b="ab", *c="efg", *d;

    d=replace(a, b, c); printf("result=%s\n", d); free(d);

    }


    正确答案:(1)p+=12 (2)strlen(s1)-i*12+i*13+1 (3)strncpy(rpi) (4)strcpy(rs3) (5)strcpy(rp)
    (1)p+=12 (2)strlen(s1)-i*12+i*13+1 (3)strncpy(r,p,i) (4)strcpy(r,s3) (5)strcpy(r,p) 解析:本题考查用C语言实现对字符串的操作。
    题目要求将字符串s1中出现的所有子串s2替换成s3,形成一个新串,但不破坏字符串s1。要不破坏字符串s1,只有用一个新串来存放处理结果;要用到新串,那么就需要重新分配空间。
    第(1)空在第一个循环体中,此循环体的作用在注释中已经给出,用来统计串s2在串s1中出现的次数,这里的统计变量已经给出,并将结果存放在统计变量i中,但每次统计成功后串s1的位置应该往后移动串s2的长度,由程序我们可以看出,串s1存放在指针变量p中,因此,指针变量p指的位置需要往后移动串s2的长度,而串s2的长度存放在变量12中。因此,此空答案为p+=12。
    第(2)空很明显是用来给变量i赋一个值,但根据s=r=(char*)malloc(i)语句我们可以推断出,当前变量i中存放的是新串的长度。而新串的长度应该等于串s1的长度减去串中x个串s2的长度,加上x个串s3的长度再加1,而在上面的循环中已经求出了串s2在串s1中出现的次数,结果存放在变量i中。因此,此空答案为strlen(sl)-i*12+i*13+1。
    第(3)空是在if(q !=NULL)成立的情况下运行的语句,而变量q指向的是s2在s1中首次出现的位置,如果条件成立,说明串s2在串s1中出现了,语句i=q-p用来表示出现的位置到s1开始位置的距离。在这些条件都清楚了后,应该往新的串中写字符了,首先写串s1的前i个字符,此空就是用来完成这个功能的,因此,此空答案为strncpy(r,p,i)。
    第(4)空是接着上一空而来的,在上面我们[分析]到,把串s1的前i个字符写入新串,那么在新串中接着要出现的应该是替换串s2的串s3,此空的任务应该是将串s3写入新串中,因此,此空答案为strcpy(r,s3)。
    第(5)空是在if(q !=NULL)不成立的情况下运行的语句,这说明串s2不在串s1中出现,在这种情况下,串应该不需要进行替换操作,而直接将串s1写入到新串中,此空的作用就是用来实现这个功能的,因此,此空答案为strcpy(r,p)。

  • 第3题:

    没有两个串p和q,求q在p首次出现位置的运算称作

    A.连接

    B.模式匹配

    C.求于串

    D.求串长


    正确答案:B
    解析:子串的定位操作通常称作串模式匹配,是各种申处理系统中最重要的操作之一,算法的基本思想是:从主串的开始字符起和模式的第一个字符比较,若相等则继续比较后续字符,否则从主串的下一个字符起再重新和模式的字符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。

  • 第4题:

    有以下程序includemain(){char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%

    有以下程序 #include<string.h> main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:A
    解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

  • 第5题:

    以下函数实现的功能是void fun (char *s){ char *p,*q,temp; p=s; q=s+ strlen(s)-1; while (p<q) { temp=*p; *p=*q; *p=temp; p++; q--; }}

    A.将一个字符串首尾颠倒

    B.计算字符串的长度

    C.统计字符串中的空格个数

    D.将字符串中的小写字母变成大写字母


    正确答案:A
    解析:本题考核while循环语句和指针的使用。在该函数中,循环开始时,指针p指向字符串的第1个字符,指针q指向字符串的最后一个字符,首先交换这两个字符;然后,指针p前进一个字符位置(指向下一个字符),指针q后退一个字符位置(指向前一个字符);经过若干次循环,条件pq将为假(即指针p和指针q相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。

  • 第6题:

    设有两个串T和P,求P在T中首次出现的位置的串运算称作【】

    A.联接

    B.求子串

    C.子串定位

    D.字符定位


    正确答案:C
    [解析]两个都是字符串,求一个字符串在另一个字符串中首次出现的位置的运算属于子串定位,而不是字符定位.

  • 第7题:

    假定双寡头各有固定成本24元,但没有可变成本,并且它们具有相同的需求曲线为:厂商1的需求曲线为:Q1=18-3P1+P2,厂商2的需求曲线为:Q2=18-3P2+P1,下列说法正确的是().

    A非串谋时,P1=P2=3.6,Q1=Q2=10.8

    B串谋时,P1=P2=3.6,Q1=Q2=10.8

    C非串谋时,P1=P2=4.5;Q1=Q2=9

    D串谋时,P1=P2=4.5;Q1=Q2=10.8


    A

  • 第8题:

    设有两个串p和q,求q在p中首次出现的位置的运算称作()

    • A、连接
    • B、模式匹配
    • C、求子串
    • D、求串长

    正确答案:B

  • 第9题:

    设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

    • A、求子串
    • B、模式匹配
    • C、串替换
    • D、串连接

    正确答案:B

  • 第10题:

    单选题
    设有两个串p和q,求q在p中首次出现的位置的运算称为()。
    A

    连接

    B

    模式匹配

    C

    求子串

    D

    求串长


    正确答案: A
    解析: 暂无解析

  • 第11题:

    单选题
    设有两个串p 和q,求p 在q中首次出现的位置的运算称作()。
    A

    连接

    B

    求子串

    C

    模式匹配

    D

    求串长


    正确答案: A
    解析: 暂无解析

  • 第12题:

    单选题
    数据结构里,设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。
    A

    求子串

    B

    联接

    C

    匹配

    D

    求串长


    正确答案: C
    解析: 暂无解析

  • 第13题:

    设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( )。

    A、求子串

    B、联接

    C、模式匹配

    D、求串长


    正确答案:C

  • 第14题:

    设有两个串p和q,求q在p中首次出现位置的运算称为( )。

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


    正确答案:B
    解析: 字串的定位操作通常称为串的模式匹配,是各种串处理系统中最重要的操作之一。

  • 第15题:

    有以下程序 #include 〈string.h〉 main ( ) { char p[]={'a','b ,'c'}, q[10]={'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符申结束符,长度不能确定;但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定:但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:B
    解析:本题考查了对字符数组赋初值.使用初始化列表对字符数组赋初值,系统不会自动为其添加字符串结束符,使用字符串初始化时才会自动添加,所以选项A是错的。数组长度在未指定的情况下由初始化列表项中数据的个数决定,若已指定且初始化项数不足时,多出部分会自动初始化为0,0等价于字符串结束符'\0'。所以选项B是正确的,C和D都是错误的。本题应该选B。

  • 第16题:

    设有两个字符串p和q,求q在p中首次出现位置的运算称为( )。

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


    正确答案:B
    B。【解析】字串的定位操作通常称为串的模式匹配,是各种串处理系统中最重要的操作之一。

  • 第17题:

    有以下程序: include include main( ) {char p[] = {'a','b','c'] ,q[10

    有以下程序: #include <stdio.h> #include <string.h> main( ) { char p[] = {'a','b','c'] ,q[10] = {'a','h','c'} prinff( "% d % d\n" , strlen (p) , strlen (q) );以下叙述中正确的是( )。

    A.在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于P数组中没有字符串结束符,长度不能确定;q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定;p数组中字符长度为3

    D.由于p和q数组中没有字符串结束符,故长度都不能确定


    正确答案:B
    解析:strlen函数用于计算以,'\0'结束的字符串的长度,函数值为字符串的实际长度,长度中不包括,'\0'。q数组定义的数组大小为10,而初始化时字符串只占用了前3个存储单元,其余存储单元系统自动加'\0',故数组q的长度为3;而p数组定义时没有指定大小,其大小根据初始化所赋值确定为3,没有字符串结束符,故字符串的长度不能确定。

  • 第18题:

    设有两个串P和q,求q在P中首次出现的位置的运算称作______。

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


    正确答案:B
    解析:求一个串在另一个串中首次出现的位置的运算称作模式匹配。

  • 第19题:

    设有两个串p和q,求q在p中首次出现的位置的运算称为()。

    • A、连接
    • B、模式匹配
    • C、求子串
    • D、求串长

    正确答案:B

  • 第20题:

    设有两个串p和q,求q在p中首次出现的位置的运算称为()


    正确答案:模式匹配

  • 第21题:

    数据结构里,设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。

    • A、求子串
    • B、联接
    • C、匹配
    • D、求串长

    正确答案:C

  • 第22题:

    单选题
    假定双寡头各有固定成本24元,但没有可变成本,并且它们具有相同的需求曲线为:厂商1的需求曲线为:Q1=18-3P1+P2,厂商2的需求曲线为:Q2=18-3P2+P1,下列说法正确的是().
    A

    非串谋时,P1=P2=3.6,Q1=Q2=10.8

    B

    串谋时,P1=P2=3.6,Q1=Q2=10.8

    C

    非串谋时,P1=P2=4.5;Q1=Q2=9

    D

    串谋时,P1=P2=4.5;Q1=Q2=10.8


    正确答案: A
    解析: 暂无解析

  • 第23题:

    填空题
    设有两个串p和q,求q在p中首次出现的位置的运算称为()

    正确答案: 模式匹配
    解析: 暂无解析

  • 第24题:

    单选题
    设有两个串t和p,求p在t中首次出现的位置的运算叫做()。
    A

    求子串

    B

    模式匹配

    C

    串替换

    D

    串连接


    正确答案: A
    解析: 暂无解析