设串s1=“ABCDEFG”,s2=“12345”,用字符数组从0下标位置存储,函数strcat(s, t)返回s和t串的连接串,strsub(s, i, j)返回串s中从第i个字符开始的连续j个字符组成的子串,strlen(s)返回串s的长度,则strcat(strsub(s1, 2, strlen(s2)), strsub(s1, strlen(s2),2))的结果是()A.CDEFG12B.BCDEFG1C.CD12345D.CDEFGFG

设串s1=“ABCDEFG”,s2=“12345”,用字符数组从0下标位置存储,函数strcat(s, t)返回s和t串的连接串,strsub(s, i, j)返回串s中从第i个字符开始的连续j个字符组成的子串,strlen(s)返回串s的长度,则strcat(strsub(s1, 2, strlen(s2)), strsub(s1, strlen(s2),2))的结果是()

A.CDEFG12

B.BCDEFG1

C.CD12345

D.CDEFGFG


参考答案和解析

相关考题:

●试题五阅读以下程序说明和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;}intcommstr(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(len1len2){s1=str1;s2=str2;}else{len2=len1;s1=str2;s2=str1;}for(j=len2;j0;j--)/*从可能最长子串开始寻找*{for(k=0; (1) =len2;k++)/*k为子串s2的开始位置*/{for(i=0;s1[ (2) ]!='\0';i++;)/* i为子串s1的开始位置*/{/* s1的子串与s2的子串比较*/for(p=0;pj) (3) ;p++);if ( (4) )/*如果两子串相同*/{for(p=0);pj;p++}/*输出子串*/printf("%c",s2[k+p]);printf("\n");count++;/* 计数增1*/}}}if (count0)break;*sublen=(count0)? (5) :0;return count;}

●试题四阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。【程序说明】该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。【程序】#includestdio.hvoid 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的剩余部分赋给cwhile(*a!=′\0′)if(*a!=*w){*(++w)=*a;a++;}else(6) ;if(*6!=′\0′)//如果字符串b还没有结束,则将b的剩余部分赋给cwhile(*b!=′\0′)if(*b!=*w){*(++w)=*b;b++;}elseb++;(7) ;}void strsort(char*s)//将字符串S中的字符排序{int i,j,n;char t,*w;W=S;for(n=0;*w!=′\0′;n++)//得到字符串长度nw++;for(i=0;in-1;i++)//对字符串s进行排序,按字母先后顺序for(j=i+1;jn;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);}

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,82)>0)S;

s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指字符串大于s2所指字符串时,执行语句S;则以下选项中正确的是( )。A.if(sl>s2)S;B.if(strcmp(s1,s2))S;C.if(strcmp(s2,s1>0)S;D.if(strcmp)(s1,s2)>0)S;

阅读以下函数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所指字符串赋给s1B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

阅读以下函数 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所指字符申赋给s1B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为oD.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为o

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;

阅读以下程序说明和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;}

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

以下说法中错误的是A.strcpy(A,B)函数是将A字符串的内容复制到B字符串中B.strlen(cha*s)返回字符串S的长度,未尾的字符不计算在内C.char a[20]="string";中字符串长度为6D.strstr(S1,S2)函数在字符串S1中从左边开始查找字符串S2,若查找成功则返回S2在S1中首次出现的位置,否则返回NULL,如果S2为"",则返回S1。

以下程序中函数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;i3;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.abcdB.abbaC.abcD.abca

以下程序中函数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.abedB.abbaC.abcD.abca

判断字符串s1是否大于字符串s2,应该使用()。A.if(strcmp(s1,s2)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))

阅读以下函数: 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所指字符串赋给s1B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

读下列程序说明和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的剩余部分赋给Cwhile(*a!='\0')if(*a!=*w){*(++w)=*a;a++;}else(6);if(*6!='\0') //如果字符串b还没有结束,则将b的剩余部分赋给cwhile(*b!='\0')if(*b! = *w){*(++w)=*b;b++;}elseb++;(7);}void strsort(char*s) //将字符串S中的字符排序{int i,j,n;char t,*w;W=S;for(n=0;*w!='\0';n++) //得到字符串长度nw++;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);}

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;

以下程序中函数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.abcdB.abbaC.abcD.abca

阅读以下函数 fun(char *s1,char *s2) { int i=0; while(s1[i]==s2[i]s2[i]!='\0')i++; return(s1[i]=='\0's2[i]=='\0'); } 此函数的功能是A.将s2所指字符串赋给s1B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

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

设char *s1, *s2;分别指向两个字符串,可以判断字符串s1和s2是否相等的表达式为()A、s1=s2B、s1==s2C、strcpy(s1,s2)==0D、strcmp(s1,s2)==0

设串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、BCDEFB、BCDEFGC、BCPQRSTD、BCDEFEF

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

设串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、BCDEFB、BCDEFGC、BCPQRSTD、BCDEFEF

判断字符串s1是否大于字符串s2,错误的使用有()A、if(strcat(s1,s2)==1)B、if(strcat(s2,s1)0)C、if(s1s2)D、if(strcat(s1,s2)0)

下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串()。A、$s1+$s2B、“{$s1}{$s2}”C、$s1.$s2D、implode(‘’,array($s1,$s2))

以下哪些可以把字符串$s1和$s2组成一个字符串?()A、$s1+$s2B、“{$s1}{$s2}”C、$s1.$s2D、implode(‘’,array($s1,$s2))/

单选题设串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))的结果串是()ABCDEFBBCDEFGCBCPQRSTDBCDEFEF

单选题设char *s1, *s2;分别指向两个字符串,可以判断字符串s1和s2是否相等的表达式为()As1=s2Bs1==s2Cstrcpy(s1,s2)==0Dstrcmp(s1,s2)==0