网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

5、在长度为n的串S的第i个位置插入另一个串,则i的合法值应该是()

A.i>0

B.I<=n

C.1<=i<=n

D.1<=i<=n+1


参考答案和解析
1<=i<=n+1
更多 “5、在长度为n的串S的第i个位置插入另一个串,则i的合法值应该是()A.i>0B.I<=nC.1<=i<=nD.1<=i<=n+1” 相关考题
考题 试题四(共 15分)阅读以下说明和C函数,将解答填入答题纸的对应栏内。【说明】函数del_substr(S,T)的功能是从头至尾扫描字符串 S, 删除其中与字符串T相同的所有子串,其处理过程为:首先从串 S 的第一个字符开始查找子串 T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T,否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型 SString定义如下:typedef struct {char *ch; /*串空间的首地址*/int length; /*串长*/}SString;【C函数】void del_substr(SString *S, SString T){int i, j;if ( S-length 1 || T.length 1 || S-length T.length )return;i = 0; /* i为串S中字符的下标 */for ( ; ; ) {j = 0; /* j为串T中字符的下标 */while ( i S-length j T.length ) { /* 在串S中查找与T相同的子串 */if ( S-ch[i]==T.ch[j] ) {i++; j++;}else {i = (1) ; j = 0; /* i值回退,为继续查找T做准备 */}}if ( (2) ) { /* 在S中找到与T相同的子串 */i = (3) ; /* 计算S中子串T的起始下标 */for(k = i+T.length; kS-length; k++) /* 通过覆盖子串T进行删除 */S-ch[ (4) ] = S-ch[k];S-length = (5) ; /* 更新S的长度 */}else break; /* 串S中不存在子串T*/}}

考题 在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:()。A.n–i+1B.n–iC.iD.i–1

考题 [说明1]函数void convelt(chal *a,int n)是用递归方法将一个正整数n按逆序存放到一个字符数组a中,例如,n=123,在a中的存放为'3'、'2'、'1'。[C函数1]void convert(char *a,int n){ int i;if((i=n/10)!=0; convert( (1) ,i);*a= (2) ;}[说明2]函数int index(char *s,char *t)检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则返回-1。[C函数2]int index(char *s,char *t){ int i,j=0;k=0;for(i=0;s[i]!:'\0';i++)( for( (3) ;(t[k]!='\0')(s[j]!='\0')( (4) );j++,k++);if( (5) ) return(i);}return(-1);}

考题 已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”。采用KMP算法进行匹配,第一次出现“失配”(s[i]≠t[j])时,i=j=5,则下次开始匹配时,i和j的值分别是()。A.i=1,j=0B.i=5,j=0C.i=5,j=2D.i=6,j=2

考题 在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≤i≤n+1)位置插入一个元素时,需要从后向前依次后移()个元素。 A、n-iB、n-i+lC、n-i-lD、i

考题 设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为( )。 A、n-i+1B、n-i-1C、iD、n-i

考题 设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。 A.n-i+1B.n-i-1C.n-iD.i

考题 下列给定程序中,函数fun()的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许79。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序;include <stdio.h>include <strzng.h>include <conio.h>/*****************found***************/void fun(char s[], int n){char a[80],*p;int i;/*****************found***************/s=p;for(i=0; i<n; i++) a[i]='*';do{a[i]=*p;/*****************found***************/i++;}while(*p);a[i]=0;strcpy(s,a);}main(){ int n;char s[80];clrscr();printf("\nEnter a string:");gets(s);printf("\nThe string\%s\n",s);printf("\nEnter n(number of*):");scanf ("%d",n);fun(s,n);printf("\nThe string after inster: \%s\n",s);}

考题 请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为AAAABBBBBBBCC则合并后的字符串内容应该是AAAABBBBBBBCC注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio. h>define M 3define N 20void fun (char a [M] [N], char *b){}main ( ){char w [M] [N] ={"AAAA", "BBBBBBB", "CC"}, i;char a[100]={" "};printf ("The string: \n ");for (i=0; i<M; i++)puts (w[i]);printf (" \n ");fun (w, a);printf ("The A string: \n ");printf("%s ",a);printf("\n\n ");}

考题 设串s="I am a teacher.’,则s的第8个字符起、长度为7的子串为()。 A."teacher."B."teacher"C."a teacher"D."teacher"

考题 向一个长度为n的顺序表中第i个元素(0≤i≤n)位置插入一个新元素时,需要从后向前依次后移(32)个元素。A.n-iB.n-i+1C.n-i-1D.i

考题 下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0位中)。例如:字符串中的数据为ADFESHDI,则输出应当是 AFESDI。请改正程序中的错误,使它能得到正确结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <stdio.h>include <string.h>define N 80/************found*************/void fun(char s,char t[]){int i,j=0;for(i=0;i<strlen(s);i++)/*********found*+************/if(i%2=0 || s[i]%2!=0)t[j++]=s[i];t[j]='\0';}main(){char s[N],t[N];clrscr();printf("\nPlease enter string s:");gets(s);fun(s,t);printf("\nThe result is:%s\n",t);}

考题 在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为______。A. n-i+1B.n-iC.iD.i-1

考题 若长度为n的线性表采用顺序存储结构,那么在第i个位置插入一个元素,需要依次向后移动 ______个元素。A.n-iB. n-i+1C. n-i-1D. i

考题 阅读下列说明和C函数,填补C函数中的空缺,将解答填入答案纸的对应栏目内。 【说明】 字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。 设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下: typedef struct ﹛ Char *str; //字符串存储空间的起始地址 int length; //字符串长 int capacity; //存储空间的容量 ﹜SString;【函数1说明】 函数indexStr(S,T,pos)的功能是:在S 所表示的字符串中,从下标pos开始查找T所表示字符串首次出现的位置。方法是:第一趟从S中下标为pos、T中下标伟0的字符开始,从左往右逐个对于来比较S和T的字符,直到遇到不同的字符或者到达T的末尾。若到达T的末尾,则本趟匹配的起始下标pos为T出现的位置,结束查找;若遇到了不同的字符,则本趟匹配失效。下一趟从S中下标pos+1处的字符开始,重复以上过程。若在S中找到T,则返回其首次出现的位置,否则返回-1。 例如,若S中的字符为伟students ents,T中的字符串伟ent,pos=0,则T在S中首次出现的位置为4。 【C函数1】 int index Str(SString S ,SString T,int pos) ﹛ int i,j: i (S.length1||T.length1||pos+T.length-1) return-1; for(i=pos,j=0;iS.length jT.length;)﹛ if (S.str[i]==T.str[j])﹛ i++;j++; ﹜ else﹛ i=( 1 );j=0 ﹜ ﹜ if ( 2 )return i -T.length; return-1; ﹜ 【函数2说明】 函数 eraseStr(S,T}的功能是删除字符串S中所有与T相同的子串,其处理过程为: 首先从字符串 S 的第一个字符(下标为0)开始查找子串T,若找到〈得到子串在S中的起始位置),则将串 S 中子串T之后的所有字符向前移动,将子串T覆盖,从而将其删除,然后重新开始查找下一个子串T,若找到就用后面的宇符序列进行覆盖,重复上述过程,直到将S中所有的子串T删除。 例如,若字符串 S为 12ab345abab678、T为ab。第一次找到ab时(位置为2),将345abab678前移,S 中的串改为12345abab678 ,第二次找到ab时(位置为 5);将ab678前移,S中的串改为12345ab678,第三次找到ab时(位置为5);将678前移 ,S中的串改为12345678 。 【C函数2】 Void eraseStr(SString*S,SStringT) ﹛ int i; int pos; if (S-length1||T.length1||S-lengthT.length) return; Pos=0; for(;;)﹛ //调用indexStr在S所表示串的pos开始查找T的位置 Pos=indexStr( 3 ); if(pos=-1) //S所表示串中不存在子串T return; for(i=pos+T.length;iS-length;i++) //通过覆盖来删除自串T S-str[( 4 )]=S-str[i]; S-length=( 5 ); //更新S所表示串的长度 ﹜ ﹜

考题 若某线性表长度为n且采用顺序存储方式,则运算速度最快的操作是( )。A.查找与给定值相匹配的元素的位置B.查找并返回第i个元素的值(1in)C.删除第i个元素(1in)D.在第i个元素(1in )之前插入一个新元素

考题 若某线性表长度为n且采用顺序存储方式,则运算速度最快的操作是(37)。A.查找与给定值相匹配的元素的位置 B.查找并返回第i个元素的值(1≤i≤n) C. 删除第i个元素(1≤i≤n) D.在第i个元素(1≤i≤n)之前插入一个新元素

考题 若某线性表长度为n且采用顺序存储方式,则运算速度最快的操作是 ( )。A.查找与给定值相匹配的元素的位置 B.查找并返回第i个元素的值(1≤i≤n) C.删除第i个元素(1≤iD.在第i个元素(1≤i≤n)之前插入一个新元素

考题 阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。 KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下: 1.在串t和串s中,分别设比较的起始下标i=j=0。 2.如果串t和串s都还有字符,则循环执行下列操作: (1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符; (2)否则,将j向右滑动到next[j]的位置,即j =next[j]。 3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1. 其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。【C代码】 (1)常量和变量说明 t,s:长度为悯铂Is的字符串 next:next数组,长度为Is (2)C程序 #include #include #include /*求next[]的值*/ void get_next( int *next, char *s, int Is) { int i=0,j=-1; next[0]=-1;/*初始化next[0]*/ while(i if(j==-1l ls[i]==s[j]){/*匹配*/ j++; i++; if( s[i]==s[j]) next[i] = next[j]; else Next[i] = j; } else j = next[j]; } } int kmp( int *next, char *t ,char *s, int lt, int Is ) { Int i= 0,j =0 ; while (i if( j==-1 || (2) ){ i ++ ; j ++ ; } else (3) ; } if (j >= ls) return (4) ; else return -1; } 【问题1】(8分) 根据题干说明,填充C代码中的空(1)~(4). 【问题2】(2分) 根据题干说明和C代码,分析出kmp算法的时间复杂度为(5)(主串和子串的长度分别为It和Is,用O符号表示)。 【问题3】(5分) 根据C代码,字符串“BBABBCAC”的next数组元素值为(6)(直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC”,则函数Kmp的返回值是(7)。

考题 设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。An-i+1Bn-i-1Cn-iDi

考题 设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),则移动元素个数为()。An-i+1Bn-iCn-i-1Di

考题 在长度 n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为()A、n-i+1B、n-iC、iD、i-1

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

考题 在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为()。A、n–i+1B、n–iC、iD、i–1

考题 在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)位置插入一个新元素时,需要从后向前依次后移()个元素。A、 n-iB、 iC、 n-i-1D、 n-i+1

考题 设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),则移动元素个数为()。A、n-i+1B、n-iC、n-i-1D、i

考题 在长度为n的字符串S的第i个位置插入另外一个字符串,i的合法值应该是()。A、i>0B、i≤nC、1≤i≤nD、1≤i≤n+1

考题 单选题在长度为n的字符串S的第i个位置插入另外一个字符串,i的合法值应该是()。A i>0B i≤nC 1≤i≤nD 1≤i≤n+1