更多"字符串'sgabacbadfgbacst'中存在有______个与字符"的相关试题:
[填空题]下列程序能将字符串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);
[单项选择]
对于求取两个长度为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. 分支-限界
[单项选择]若字符串s的长度为n(n>1),且其中的字符互不相同,则s的长度为2的子串有()个。
A. n
B. n-1
C. n-2
D. 2
[单项选择]设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
[简答题]【说明】
本程序可以将字符串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);
}
[简答题]改错题(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<<"原字符串:"<<
[填空题]若串s="MathTypes",则其子串的数目是【 】。
[单项选择]字符串“computer”中长度为3的子串有()个。
A. 4
B. 5
C. 6
D. 7
[填空题]若串s="Program",则其子串的数目是 【3】 。
[单项选择]对于字符串“software”,其长度为2的子串共有()个。
A. 4
B. 7
C. 28
D. 56