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

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

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

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

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

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


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

  • 第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和s2已正确确定义并分别指向两个字符串。若要求:当s1所指字符串大于s2所指字符串时,执行语句S;则以下选项中正确的是( )。

    A.if(s1 > s2) S;

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

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

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


    正确答案:D
    解析:字符串的比较不能直接用关系运算符,可用字符串比较函数strcmp(char.s1,char*s2)实现,其比较规则是对两个字符串自左至右逐个字符按其对应的ASCII码值进行比较,直到出现不同的字符或遇到'\0'为止。若对应字符都相同,则两字符串相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。当s1s2时,返回负数;当s1=s2时,返回0;当s1>s2时,返回正数。所以在此题中要使得s1所指串大于s2所指串,就必定使得strcmp(s1,s2)>0。

  • 第7题:

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

    A.15

    B.16

    C.17

    D.18


    正确答案:C

  • 第8题:

    设串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

  • 第9题:

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

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

    正确答案:C

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

    读下列程序说明和C程序,将应填入(n)处。

    【程序说明】

    该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。

    【程序】

    include<stdio.h>

    void strmerge(char,a,char *b,char *c) //将字符串a,b合并到字符串c中

    {

    char t,*w;

    w=c;

    while((1))

    {//找到字符串a,b当前字符中较小的字符

    if(*a< *b)

    {

    t= *a;

    (2);

    {

    else if (*a>*b)

    {

    t= *b;

    (3);

    }

    else //字符串a,b当前字符相等

    {

    t= *a;

    a++;

    b++;

    }

    if((4)) //开始,可直接赋值

    *w=t;

    else if(t!=*w)

    //如果a,b中较小的当前字符与c中当前字符不相等,才赋值(5);

    }

    if(*a!=\'\0') //如果字符串a还没有结束,则将a的剩余部分赋给C

    while(*a!='\0')

    if(*a!=*w)

    {

    *(++w)=*a;

    a++;

    }

    else

    (6);

    if(*6!='\0') //如果字符串b还没有结束,则将b的剩余部分赋给c

    while(*b!='\0')

    if(*b! = *w)

    {

    *(++w)=*b;

    b++;

    }

    else

    b++;

    (7);

    }

    void strsort(char*s) //将字符串S中的字符排序

    {

    int i,j,n;

    char t,*w;

    W=S;

    for(n=0;*w!='\0';n++) //得到字符串长度n

    w++;

    for(i=0;i<n-1;i++) //对字符串s进行排序,按字母先后顺序

    for(j=i+1;j<n;j++)

    if((8))

    {

    t=s[i];

    s[i]=s[j];

    (9);

    }

    }

    void main()

    {

    char s1[100],s2[100],s3[100];

    printf("\nPlease,input the first string:");

    scanf("%s",s1);

    printf("\nPlease input the second string:");

    scanf("%s",s2);

    strsort(s1); //将字符串s1排序

    strsort(s2); //将字符串s2排序

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

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

    s3[0]='\0'; //字符串s3的第一个字符先置'\0'结束标志

    (10) //将s1和s2合并,按照字母顺序排列,

    //且要删去相同字符,存入s3中

    printf("%s",s3);

    }


    正确答案:(1)(*a!='\0')&&(*b! ='\0')(2)a++ (3)b ++(4)*w=='\0'(5)*(++w)=t(6)a++ (7)*(++w)='\0'(8)s[i]>s[j](9)s[j]=t (10)strmerge(s1s2s3)
    (1)(*a!='\0')&&(*b! ='\0')(2)a++ (3)b ++(4)*w=='\0'(5)*(++w)=t(6)a++ (7)*(++w)='\0'(8)s[i]>s[j](9)s[j]=t (10)strmerge(s1,s2,s3) 解析:根据题意,对字符串的处理分为三步:第一步是从键盘上输入两个字符串;第二步是将两个字符串分别排序;第三步是将字符串合并;第四步是显示处理结果。
    第一步和第四步容易实现,关键是第二步和第三步的处理,下面分别加以说明。
    字符串排序是指将一个字符串中各个字符按照ASCII码值的大小排序。例如,字符串“Beijing”由小到大的排序结果应该是:“Bejiign”;排序算法很多,第二个例子,我们就要介绍快速排序算法。在这里使用简单的冒泡排序算法:即将字符串中的每一个字符一个个进行比较,找出最小的字符,然后再在剩下的字符中找最小的字符。例如,字符“Beijing”的排序过程如下:
    第一次将字符“Beijing”中的每一个字符:'B'、'e'、'i'、'j'、'i'、'n'、'g'进行比较,找到最小的字符'B'。
    第二次在剩下的字符'e'、'i'、'j'、'i'、'n'、'g'中,找到最小的字符'e'。
    第三次在剩下的字符'j'、'i'、'n'、's'中,找到最小的字符'j'。
    第三步是合并字符串,合并后的字符串仍然由小到大排序。由于待合并的两个字符串已经排好序。假定两个排好序的字符串分别为A和B,合并后的字符串为C,要使待合并后的字符串仍然由小到大排序,可采取下述步骤:
    1.从前往后取A中的字符,并按从前往后的顺序与B中的字符比较,若A中的字符较小,则将该字符存入C,并移到A的下一个字符,继续与B中的字符比较。
    2.若A中的字符较大,则将B中的字符存入C,并移到B的下一个字符,继续与A中的字符比较。
    3.若A与B中的字符相等,则将A或B中的字符存入C,并将A和B均移到下一个字符。
    4.若A或B字符串到达末尾,则将B或A的剩余部分加到字符串 C中。
    需要注意的是:A、B和C三个字符串均可以用字符数组来表示,C数组的长度不能小于A、B两数组的长度之和。另外,判别字符串是否结尾的方法是:从A或B中取出的字符是否为'\0',所有字符串都是以'\0'结尾的。

  • 第18题:

    以下程序中函数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

  • 第19题:

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

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

    正确答案:D

  • 第20题:

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


    正确答案:“BCDEDE”

  • 第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”
    解析: 暂无解析