更多“设有两个串S1与S2,求串S2在S1中首次出现位置的运算称作()”相关问题
  • 第1题:

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

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


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

  • 第2题:

    s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S。则以下选项中正确的是______。

    A.if (s1>s2)S;

    B.if(strcmp(s1, s2))S;

    C.if(strcmp(s2, s1)>0)S;

    D.if(strcmp(s1, s2)>0)S;


    正确答案:D
    解析:C语言中,用strcmp(s1,s2)来比较串s1和s2的大小,当s1>s2时,strcmp的值为正数;当s1=s2时,strcmp的值为0;当s1s2时,strcmp的值为负数。因此D选项的if语句正确。

  • 第3题:

    以下说法中错误的是

    A.strcpy(A,B)函数是将A字符串的内容复制到B字符串中

    B.strlen(cha*s)返回字符串S的长度,未尾的字符不计算在内

    C.char a[20]="string";中字符串长度为6

    D.strstr(S1,S2)函数在字符串S1中从左边开始查找字符串S2,若查找成功则返回S2在S1中首次出现的位置,否则返回NULL,如果S2为"",则返回S1。


    正确答案:A
    解析:strcpy( )函数的一般形式为:strcpy(to,from),该函数将from字符串中的内容复制到to字符串中,故A项错误。

  • 第4题:

    判断字符串s1是否大于字符串s2,应该使用()。A.if(strcmp(s1,s2)<0)B.if(s1>s2)C.if(strcmp(s2,s1)

    判断字符串s1是否大于字符串s2,应该使用( )。

    A.if(strcmp(s1,s2)<0)

    B.if(s1>s2)

    C.if(strcmp(s2,s1)<0)

    D.if(strcmp(s1,s2))


    正确答案:C
    解析: 本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

  • 第5题:

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

    A.联接

    B.求子串

    C.子串定位

    D.字符定位


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

  • 第6题:

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

    A.求子串
    B.判断是否相等
    C.模式匹配
    D.连接

    答案:C
    解析:
    A项,求子串操作是从字符串S中截取第i个字符开始后的长度1的子串。BD明显不对。

  • 第7题:

    设char *s1, *s2;分别指向两个字符串,可以判断字符串s1和s2是否相等的表达式为()

    • A、s1=s2
    • B、s1==s2
    • C、strcpy(s1,s2)==0
    • D、strcmp(s1,s2)==0

    正确答案:D

  • 第8题:

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

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

    正确答案:B

  • 第9题:

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

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

    正确答案:C

  • 第10题:

    若REPLACE(S,S1,S2)表示用字符串S2替换字符串S中的子串S1的操作,则对于S=“Beijing&Nanjing”,S1=“Beijing”,S2=“Shanghai”,REPLACE(S,S1,S2)=()。

    • A、“Nanjing&Shanghai”
    • B、“Nanjing&Nanjing”
    • C、“ShanghaiNanjing”
    • D、“Shanghai&Nanjing”

    正确答案:D

  • 第11题:

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

    连接

    B

    求子串

    C

    模式匹配

    D

    判断子串


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

  • 第12题:

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

    连接

    B

    求子串

    C

    模式匹配

    D

    求串长


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

  • 第13题:

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

    A、求子串

    B、求串长

    C、联接

    D、模式匹配


    参考答案:D

  • 第14题:

    阅读下列算法说明和算法,将应填入(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)。

  • 第15题:

    设字符串s1='ABCDEFG',s2='PQRST',则运算s=CONCAT(SUB(s1,2,LEN(s2)),SUB(s1,LEN(s2,2))后的串值为(65)。

    A.'ABCDEFEF'

    B.'BCDEFG'

    C.'BCPQRST'

    D.'BCQR'


    正确答案:A
    解析:s=CONCAT(SUB(s1,2,5),SUB(s1,5,2))=CONCAT(BCDEF,EF)=‘BDCEFEF’

  • 第16题:

    下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是( )。

    A.if(strcmp(s2,s1)==0)ST;

    B.if(s1===s2)ST;

    C.if(strcpy(s1,s2)==1)ST;

    D.if(s1,s2==0)ST;


    正确答案:A
    解析:strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCⅡ表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。选项A中if(strcmp(s2,s1)=0)ST,若s2等于s1,则返回值0,0等于0,所以逻辑表达式strcmp(s2,s1)=0为真执行ST。

  • 第17题:

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

    A.连接

    B.模式匹配

    C.求子串

    D.求串长


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

  • 第18题:

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

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

    正确答案:B

  • 第19题:

    为了判断两个字符串s1和s2是否相等,应当使用()

    • A、if(s1==s2)
    • B、if(s1=s2)
    • C、if(strcmp(s1,s2))
    • D、if(strcmp(s1,s2)==0)

    正确答案:D

  • 第20题:

    设字符串S1= “ABCDEF”,S2= “PQRS”,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为()。


    正确答案:“BCDEDE”

  • 第21题:

    设有串S1=’I an a student’,S2=’st’,其index(S1,S2)=()


    正确答案:8

  • 第22题:

    判断字符串s1是否大于字符串s2,错误的使用有()

    • A、if(strcat(s1,s2)==1)
    • B、if(strcat(s2,s1)>0)
    • C、if(s1>s2)
    • D、if(strcat(s1,s2)>0)

    正确答案:A,B,C,D

  • 第23题:

    填空题
    设有串S1=’I an a student’,S2=’st’,其index(S1,S2)=()

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

  • 第24题:

    填空题
    设字符串S1= “ABCDEF”,S2= “PQRS”,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为()。

    正确答案: “BCDEDE”
    解析: 暂无解析