两个字符串S1和S2的长度分别为m和n,求这两个字符串最大共同子串的时间复杂度为T(m,n),这最优的时间复杂度为()。
以下说法中错误的是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。
点击查看答案
判断字符串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;
下列选项中,能够满足“若字符串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;
阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 [说明] 下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度L及其在各字符串中的起始位置(L=0时不存在公共字串)。例如,字符串"The light is not bright tonight"与"Tonight the light is not bright"的最长公共子串为"he light is not bright",长度为22,起始位置分别为2和10。 设A[1:M]表示由M个字符A[1],A[2],…,A[M]依次组成的字符串;B[1:N]表示由N个字符B[1],B[2],…,B[N]依次组成的字符串,M≥N≥1。 本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在A、B字符串中查找是否存在长度为L的公共子串,即在A、B字符串中分别顺序取出长度为L的子串后,调用过程判断两个长度为L的指定字符串是否完全相同(该过程的流程略)。 [流程图]