niusouti.com

设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是()A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

题目

设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是()

A.BCDEF

B.BCDEFG

C.BCPQRST

D.BCDEFEF


相似考题
更多“设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是()”相关问题
  • 第1题:

    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语句正确。

  • 第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题:

    以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址

    #include <stdio.h>

    #include <string.h>

    char *scmp(char *s1, char *s2)

    { if(strcmp(s1,s2)<0)

    return(s1);

    else return(s2);

    }

    main( )

    { int i; char string[20], str[3][20];

    for(i=0;i<3;i++) gets(str[i]);

    strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/

    strcpy(string,scmp(string,str[2]));

    printf("%s\n",string);

    }

    若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B
    解析:当第一次执行strcpy()函数时,把输入的前两个串中的较小者复制到string中,第二次调用strcpy()函数时,则是把前两者中的较小者与第三个串进行比较返回较小者,并复制到string中,故string存放了3个输入串中的最小者。

  • 第4题:

    以下程序中函数scmp功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#includ<string. h>char *scmp(char *s1,char *s2){ if(strcmp(s1,s2)<0) return(s1); else return(s2);}main(){ int i;char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); //库函数 strcpy 对字符串进行复制 strcpy(string,scmp(stfing,str[2])); puts(string); }若运行时依次输入: abed、abba 和abc三个字符串,则输出结果为( )。

    A.abed

    B.abba

    C.abc

    D.abca


    正确答案:B

  • 第5题:

    阅读以下函数: fun(char*s1, char*s2) { int i=0; while(s1[i]==s2[i]&& s2[i]!='\0') i++; return(s1[i]==&& s2{i)!=='\0'); } 此函数的功能是( )。

    A.将s2所指字符串赋给s1

    B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

    C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

    D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0


    正确答案:C
    解析:在函数fun()中有两个字符型指针变量s1和s2,在函数中程序执行while循环,该循环退出条件有两个:一个是 s1[i]!=s2[i](两个字符串不相等);第二个是s1[i]和s2[i]相等均为\0(两个字符串相等)。循环退出后,执行return语句,即两个字符串相等则返回1,不相等则返回0。所以,C选项为所选。

  • 第6题:

    假设串S1=“data”,S2=“stru”,则函数strlen(strcat (S1,S2))__________.


    正确答案:
     8

  • 第7题:

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

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

    正确答案:D

  • 第8题:

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


    正确答案:“BCDEDE”

  • 第9题:

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


    正确答案:8

  • 第10题:

    设串sI="ABCDEFG",s2="PQRST",函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,1en(s2)),subs(sl,len(s2),2))的结果串是()

    • A、BCDEF
    • B、BCDEFG
    • C、BCPQRST
    • D、BCDEFEF

    正确答案:D

  • 第11题:

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

    连接

    B

    求子串

    C

    模式匹配

    D

    判断子串


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

  • 第12题:

    单选题
    若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”


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

  • 第13题:

    阅读以下程序说明和C程序,将应填入(n)处的子句,写在对应栏内。

    【程序说明】

    函数int commstr(char * str1,char * str2,int * sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。

    函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。

    【程序】

    int strlen(char * s)

    {char *t=s;

    while( * ++);

    return t-s-1;

    }

    int commstr(char) *str1,char *str2,int *sublen

    { char*s1, *s2;

    int count=0,len1 ,len2,k,j,i,p;

    len1:=strlen(str1)

    len2 = strlen(str2);

    if(len1>len2)

    {s1=str1 ;s2=str2;}

    else {len2 = len1;s1 = str2;s2 = str1;}

    for(j=len2;j>0;j--) /*从可能最长子串开始寻找*/

    {for(k=0;(1)<:len2;k++) /*k为子串s2的开始位置*/

    {for(i=0;s1[(2)]!='\0';i++;) /*i为子串s1的开始位置*/

    { /*s1的子串与s2的子串比较*/

    for (p=0;p<j)&&(3);p++);

    if ((4)) /*如果两子串相同*/

    {for(p=0);p<j;p++} /*输出子串*/

    printf ("%c",s2[k+p]);

    printf ("\n");

    count++;/*计数增1 */

    }

    }

    }

    if (count>0) break;

    *sublen=(count>0)?(5):0;

    return count;

    }


    正确答案:(1)k+j (2)i+j-1 (3)s1[i+P]==s2[k+P] (4)P==j或p>=j (5)j
    (1)k+j (2)i+j-1 (3)s1[i+P]==s2[k+P] (4)P==j或p>=j (5)j

  • 第14题:

    以下说法中错误的是

    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项错误。

  • 第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,应该使用()。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,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

  • 第17题:

    以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include<string> char*scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else retrun(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i+

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B

  • 第18题:

    设串s1="Data Structures、with Java",s2="it",则子串定位函数index(s1,s2)的值为 ( )

    A.15

    B.16

    C.17

    D.18


    正确答案:C

  • 第19题:

    设串s1=’ABCDEFG’,s2=’PQRST’,函数Concat(x,y)返回x和y串的连接串,SubStr(s,i,j)返回串s的从第i个位置开始的j个字符组成的子串,StrLength(s)返回串s的长度,则Concat(SubStr(s1,2,StrLength(s2)),SubStr(s1,StrLength(s2),2))的结果串是()

    • A、BCDEF
    • B、BCDEFG
    • C、BCPQRST
    • D、BCDEFEF

    正确答案:D

  • 第20题:

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

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

    正确答案:C

  • 第21题:

    若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

  • 第22题:

    下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串()。

    • A、$s1+$s2
    • B、“{$s1}{$s2}”
    • C、$s1.$s2
    • D、implode(‘’,array($s1,$s2))

    正确答案:A

  • 第23题:

    单选题
    设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是()
    A

    BCDEF

    B

    BCDEFG

    C

    BCPQRST

    D

    BCDEFEF


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

  • 第24题:

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

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