更多"若字符串s的长度为n(n>1),且其中的字符互不相同,则s的长度为2的"的相关试题:
[填空题]下列程序能将字符串s1中的所有与字符串str1相同的子串替换成字符串sb2,并将替换后的新串存于字符数组s2中。
#include<stdio. h>
void replace(s1,s2,str1,str2)
char *s1,*s2,*str1,*str2;
char *t0,*t1,*t2,*x,*y;
x=s1;y=s2;
while( 【8】 )
for(t0=s1,t1=str1; ((*t1!=’/O’&& 【9】 ;t0++,t1++);
if(*t1!=’/0’) *s2++= 【10】 ;
else
for(t1=str2;*t1!=’/0’;) *s2++= 【11】 ;
【12】 ;
*s2=’/0’;
main ( )
static char s1[]="abcdef ababcd abab.",s2125];
replace (s1, s2, "abc", "XYZ");
printf("%s/n",s2);
[单项选择]设S是一个长度为5的字符串,其中的字符各不相同,则计算S中互异的非平凡子串(非空且不同于S本身)数目的算式为()
A. 5+4+3+2+1
B. 5+4+3+2
C. 4+3+2+1+1
D. 4+3+2+1
[填空题]字符串"sgabacbadfgbacst"中存在有______个与字符串"ba"相同的子串。
[单项选择]字符串“computer”中长度为3的子串有()个。
A. 4
B. 5
C. 6
D. 7
[单项选择]对于字符串“software”,其长度为2的子串共有()个。
A. 4
B. 7
C. 28
D. 56
[简答题]【说明】
本程序可以将字符串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);
}
[单项选择]
对于求取两个长度为n 的字符串的最长公共子序列(LCS)问题,利用(57 )策略可以有效地避免子串最长公共子序列的重复计算,得到时间复杂度为O(n2)的正确算法。串<1,0,0,1,0,1,0,1>和<0,1,0,1,1,0,1,1>的最长公共子序列的长度为 (58) 。
(57)处填()。
A. 分治
B. 贪心
C. 动态规划
D. 分支-限界
[填空题]已知substr(s,i,len)函数的功能是返回串s中第i个字符开始长度为len的子串,strlen(s)函数的功能是返回串s的长度。若s="ABCDEFGHUK",t="ABCD",执行运算substr(s,strlen(t),strlen(t))后的返回值为______。
[单项选择]要从字符串“中国海南省”中取出子串“海南省”,应该使用函数( )。
A. SUBSTR("中国海南省",3,3)
B. SUBSTR("中国海南省",5,2)
C. SUBSTR("中国海南省",5,3)
D. SUBSTR("中国海南省",5,6)
[简答题]改错题(20分) 【题目】 以下程序的功能是:根据字符串str中是否包含子串substr,决定如何将字符串str1插入到str的不同位置。插入方法是:如果str中包含子串substr,则将str1插入到str中首次出现的子串substr之后;否则,插入到str的尾部。 正确程序的输出如下: 原字符串:aabcd12345 子字符串:abcd 插入字符串:ABC 新字符串:aabcdABC12345 含有错误的源程序如下: #include #include char *find(char *str,char *substr) { unsigned lent=strlen(str); for(char *p1=str,*p2=substr;strlen(p1)>=len;p1++){ for(unsigned i=0;ilen) return p1+len; } return 0; } char *insert(char *str,char *substr,char *str1) { char p=find(str,substr); if(p) strcat(str,str1); else{ char *tmp=new char[strlen(str)+strlen(str1)+1]; strcpy(tmp,str1) strcat(tmp,p); strcpy(p,tmp); delete []tmp; } return str; } void main( ) { char *str=new char[80],substr[]="abcd",str1[]="ABC"; strcpy(str,"aabcdl2345"); ’ cout<<"原字符串:"<<
[单项选择]要从字符串“中国海南省”中取出子串“海南省”,应使用的函数是( )。
A. SUBSTR("中国海南省",3,3)
B. SUBSTR("中国海南省",5,2)
C. SUBSTR("中国海南省",5,3)
D. SUBSTR("中国海南省",5,6)
[单项选择]从字符串S("a b c d e f g")返回子串B("c d")的正确表达式为( )。
A. Mid(S,3,2)
B. Right(Left(S,4),2)
C. Left(Right(S,5),2)
D. 以上都可以
[单项选择]下列能表示字符串s1长度的是
A. s1.length() B) s1.length C) s1.size D) s1.size()
[填空题]在给定程序中,函数fun的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长<N。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构。
文件BLANK1.C内容如下:
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
void fun(char( *ss)[N])
int i,j,k=0,n,m,len;
for(i=0;i<M;i++)
len=strlen(ss[i]);
if(i==0)n=len:
if(len>n)
/**********found**********/
n=len;
(1) =i;
for(i=0;i<M;i++)
if(i!=k)
m=n:
len=strlen(ss[i]);
/***********found***********/
for(j= (2) ;j>=0;j--)ss[i][m--]=ss[i][j];
for(j=0;j<n-len;j++)
/**********found**********/
(3) =’*’:
void main( )
char ss[M][N]="shanghai","guangzhou","beijing","tianjing","cchongqing";
int i;
printf("/nThe original strings are: /n");
for(i=0;i<M;i++)printf("%s/n",ss[i]);
printf("/n");
fun(ss);
printf("/nThe resuh