itgle.com
更多“设S 是一个长度为 n 的非空字符串,其中的字符各不相同,则其互异的非平凡子串(非空且不同于 S 本 ”相关问题
  • 第1题:

    已知字符串S1中存放一段英文,写出算法format(s1,s2,s3,n),将其按给定的长度n格式化成两端对齐的字符串S2, 其多余的字符送S3。


    参考答案:本题要求字符串s1拆分成字符串s2和字符串s3,要求字符串s2“按给定长度n格式化成两端对齐的字符串”,即长度为n且首尾字符不得为空格字符。算法从左到右扫描字符串s1,找到第一个非空格字符,计数到n,第n个拷入字符串s2的字符不得为空格,然后将余下字符复制到字符串s3中。
      [算法描述]
      void format (char *s1,*s2,*s3)
      //将字符串s1拆分成字符串s2和字符串s3,要求字符串s2是长n且两端对齐
      {char *p=s1, *q=s2;
      int i=0;
      while(*p!= '\0' && *p== ' ') p++;//滤掉s1左端空格
      if(*p== '\0') {cout<<"字符串s1为空串或空格串"<  while( *p!='\0' && i  //字符串s1向字符串s2中复制
      if(*p =='\0'){cout<<"字符串s1没有"<  if(*(--q)==' ' ) //若最后一个字符为空格,则需向后找到第一个非空格字符
      {p-- ; //p指针也后退
      while(*p==' '&&*p!='\0') p++;//往后查找一个非空格字符作串s2的尾字符
      if(*p=='\0')
      {cout<<"s1串没有"<  *q=*p; //字符串s2最后一个非空字符
      *(++q)='\0'; //置s2字符串结束标记
      }
      *q=s3;p++; //将s1串其余部分送字符串s3。
      while (*p!= '\0') {*q=*p; q++; p++;}
      *q='\0'; //置串s3结束标记
      }

  • 第2题:

    若字符串s的长度为n(n>1)且其中的字符互不相同,则s的长度为2的子串有______个。

    A.n

    B.n-1

    C.n-2

    D.2

    A.

    B.

    C.

    D.


    正确答案:B

  • 第3题:

    设s是一个长度为5的字符串,其中的字符各不相同,则计算s中互异的非平凡子串(非空且不同于s本身)数目的算式为( )。

    A.5+4+3+2+1

    B.5+4+3+2

    C.4+3+2+l

    D.4+3+2


    正确答案:B
    解析:假设s为字符串“abcdc”,则长度为1的子串有“a”、“b”、“c”、“d”及“e”,共5个;长度为2的子串有“ab”、“bc”、“cd”及“de”,共4个;长度为3的子串有“abc”、“bcd”及“cde”共3个;长度为4的子串有“abcd”及“bcde”,共2个;长度为5的子串有“abcde”,共1个;空串是任何字符串的子串。由于本题中,空串和等于s本身的串不包括,所以子串的数目为5+4+3+2。

  • 第4题:

    标准库函数fgets(s,n,file)的功能是( )。A.从文件file中读取长度为n的字符串存入字符数s由 SXB

    标准库函数fgets(s,n,file)的功能是( )。

    A.从文件file中读取长度为n的字符串存入字符数s由

    B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中

    C.从文件file中读到n个字符串存入字符数组s中

    D.从文件file中读取长度为n-1个字符的字符串存字符数组S中


    正确答案:B
    本题考查fgets函数的使用调用形式:fgets(s,n,fp)。fgets函数参数说明:“S”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组S中,读入字符串后会自动在字符串末尾加入"\0"结束符,表示字符串结束。

  • 第5题:

    下列函数的功能是set(s,t){ char *s,*t; while((*s)&&(*t)&&(*t++==*s++)); return(*s-*t);}A.求字符串的长度B.比较两字符串的大小C.将字符串s复制到字符串t中D.将字符串s连接到字符串t后


    正确答案:B
    在本题中,从题目给出的四个选项我们就可以知道,程序是对两个字符串进行操作。下面将具体分析程序。
    程序首先定义两个字符型的指针变量s和t,从后面的程序中不难看出这两个指针变量应该用来对两个字符串进行操作处理。用循环来对字符串进行处理时,循环继续的条件是指针变量s和指针变量t所指向的结果值不为0,且两结果值相等。很显然,指针变量s和指针变量t所指向的结果值不为0,说明两字符串没有结束,只有结束时才为0,而结果值相等说明两字符相等,如果不等,循环则结束,此时程序将要求返回不等元素之间的差值,从差值的正负关系我们可以判断出哪个元素更大。综上所述,程序段的作用是用来比较两字符串的大小。因此,本题正确的答案选B。

  • 第6题:

    己知字符串 s=&39;(X+Y)*Z&39; ,其中,单引号不是字符串的内容, 经过以下运算后,t3 的值是( )。 t1=SubString(s ,3,1) t2=Concat(&39;XY&39; ,t1) t3=Replace(s,SubString(s,1,5),t2) 注: SubString(s,k,n)表示从串 s的第 k 个字符开始取出长度为 n 的子串, Concat(s,t)表示将串 t 连接在 s 之后, Replace(s,t,r)表示用 r 替换串 s 中的子串 t。

    A.;XY Z*’ B. &39;(X Z)*Y&39; C. &39;XYZ *’ D. &39;XY *Z’


    正确答案:D

  • 第7题:

    【试题三】阅读下列说明和 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 indexStr(SString S ,SString T,int pos)﹛int i,j:if(S.length<1||S.lengthleght<1||T.length<1||S->lengthlength;i++) //通过覆盖来删除自串 TS->str[()]=S->str[i];S->length=(); //更新 S所表示串的长度﹜﹜


    答案:
    解析:
    (1)i+1(2)j==T.length(3)S,T,pos(4)i-T.length(5)S ->length -T.length
    【解析】

    函数1为字符串匹配,算法为:先判断字符串S和T的长度,如果为空则不用循环,另外,如果字符串S的长度<字符串T的长度,那字符串S中也不能含有字符串T,也无需进行匹配。那当上述情况都不存在时,即需要进行循环。即从S的第一个字符开始,与T的第一个字符进行比较,如果相等,则S的第二个字符和T的第二字符进行比较,再相等就再往后移动一位进行比较,依次直到字符串T的结尾,也就是说j=T,.length。当某一个字符与T的字符不相等时,那么字符串S就往下移一位,再次进行与T的第一个字符进行比较,此时j恢复初始值,j=0。函数2为字符串的删除运算。首先,要调用函数 indexStr,需要三个参数,字符串S、字符串T和pos。然后删除的字符串的位置为删除初始点的位置到其位置点+字符串T的长度,并将后面的字符串前移。而删除T字符串后,字符串S的总长度变化,需减去字符串T的长度。

  • 第8题:

    设字符串S=”Olympic”,S的非字串的数目是()

    • A、28
    • B、29
    • C、16
    • D、17

    正确答案:A

  • 第9题:

    下列关于字符串的说法中,只有()是正确的。

    • A、字符串的长度是指串中包含的字母的个数
    • B、字符串的长度是指串中包含的不同字符的个数
    • C、若T包含在S中,则T一定是S的一个子串
    • D、一个字符串不能说是其自身的一个子串

    正确答案:C

  • 第10题:

    单选题
    下列关于字符串的说法中,只有()是正确的。
    A

    字符串的长度是指串中包含的字母的个数

    B

    字符串的长度是指串中包含的不同字符的个数

    C

    若T包含在S中,则T一定是S的一个子串

    D

    一个字符串不能说是其自身的一个子串


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    标准函数fgets(s,n,f)的功能是()
    A

    从文件f中读取长度为n的字符串存人指针s所指的内存

    B

    从文件f中读取长度不超过n-1的字符串存人指针s所指的内存

    C

    从文件f中读取n个字符串存人指针s所指的内存

    D

    从文件f中读取长度为n-1的字符串存入指针s所指的内存


    正确答案: D
    解析: 暂无解析

  • 第12题:

    单选题
    标准库函数fgets(s,n,f)的功能是(  )。
    A

    从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

    B

    从文件f中读取长度为n的字符串存入指针s所指的内存

    C

    从文件f中读取n个字符串存入指针s所指的内存

    D

    从文件f中读取n-1个字符串存入指针s所指的内存


    正确答案: D
    解析:
    fgets函数功能是从f所指文件中读入n-1个字符放入s为起始地址的空间内,并在尾端自动加一个结束标志“\0”。同时将读/写位置指针向前移动字符串长度个字节。在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束,A项正确。B项中“读取长度为n”错误。C项与D项中“读取n/n-1个字符串”错误,读取的是n-1个字符。答案选择A选项。

  • 第13题:

    以下说法中错误的是

    A.strcpy(A,B)函数是将A字符串的内容复制到B字符串中

    B.strlen(cha*s)返回字符串S的长度,未尾的字符不计算在内

    C.char a[20]="string";中字符串长度为6

    D.strstr(S1,S2)函数在字符串S1中从左边开始查找字符串S2,若查找成功则返回S2在S1中首次出现的位置,否则返回NULL,如果S2为"",则返回S1。


    正确答案:A
    解析:strcpy( )函数的一般形式为:strcpy(to,from),该函数将from字符串中的内容复制到to字符串中,故A项错误。

  • 第14题:

    标准库函数fgets(s,n,file)的功能是( )。

    A.从文件file中读取长度为n的字符串存入字符数组s中

    B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

    C.从文件file中读取n个字符串存入字符数组s中

    D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中


    正确答案:B
    解析: 字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。
    fgets函数的功能:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\0'”结束符,表示字符串结束。

  • 第15题:

    设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。

    A.2n-1

    B.n2

    C.(n2/2)+(n/2)

    D.(n2/2)+(n/2)-1


    正确答案:D

  • 第16题:

    标准库函数fgets(s,n,file)的功能是( )。A.从文件file中读取长度为n的字符串存入字符数组S由S

    标准库函数fgets(s,n,file)的功能是( )。

    A.从文件file中读取长度为n的字符串存入字符数组S由

    B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组S中

    C.从文件file中读到n个字符串存入字符数组s中

    D.从文件file中读取长度为n-1个字符的字符串存人字符数组s中


    正确答案:B
    本题考查fgets()函数的使用调用形式:fgets(S,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串末尾加入″\0″结束符。表示字符串结束。

  • 第17题:

    给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。

    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

    注意:源程序存放在考生文件夹下的BLANKl.C中。

    不得增行或删行,也不得更改程序的结构!


    正确答案:(1)N (2)substr (3)0
    (1)N (2)substr (3)0 解析:本题中函数fun的功能是在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。
    在fun函数中,利用循环逐个查找ss所指字符串数组中的每一个字符串,并判断是否含有substr所指的子串,有则输出。

  • 第18题:

    阅读下列说明和C代码,回答问题,将解答填入答题纸的对应栏内。【说明1】
    函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。【C函数】
    void deldigit(char *s)
    {
    char *t = (char *)malloc( (1) ); /*申请串空间*/
    int i, k = 0;

    if (!t) return;
    for(i = 0; i < strlen(s); i++)
    if ( !(*(s+i)>=’0’ && *(s+i)<=’9’) ) {
    t[k++] = (2) ;
    }
    (3) = ’\0’; /*设置串结束标志*/
    strcpy(s,t);
    free(t);
    }
    【说明2】
    函数reverse(char *s, int len)的功能是用递归方式逆置长度为len的字符串s。例如,若串s的内容为“abcd”,则逆置后其内容变为“dcba”。
    【C函数】
    void reverse(char *s, int len)
    {
    char ch;
    if ( (4) )
    {
    ch = *s;
    *s = *(s+len-1);
    *(s+len-1) = ch;
    reverse( (5) );
    }
    }


    答案:
    解析:
    (1)strlen(s)+1
    (2)*(s+i),或s[i]或其等价表示
    (3)*(t+k)或t[k] 或其等价表示
    (4)len>1 或len>=1 或其等价表示
    (5)s+1 len-2根据说明1,在函数deldigit(char*s)中需先申请一个与s等长的临时字符串空间并令t指向它,因此空(1)处应填入“strlen(s)+1”,其中,加1的原因是函数strlen计算s所指向字符串的长度时,没有包含串结束标志字符“\0”。当然,申请比“strlen(s)+1”更大的存储区也可以,只是没有必要。
    由于需要将非数字字符按原来的顺序存入t所指向的存储区,所以空(2)处填入“s[i]”,或其等价表示形式。
    最后在设置t所指向字符串的结束标志,即令t[k]=’\0’.在这里,空(3)处的t[k]写为t[k++]也可以,而写为t[k+1]或t[++k]则不符合整个代码的处理逻辑。
    函数reverse(char*s,int len)的功能是用递归方式逆置长度为len的字符串s,其中以下代码实现了将s所指字符与串中最后一个字符交换的处理。
    Ch=*s; *s=*(s+len-1); *(s+len-1)=ch;

  • 第19题:

    设有字符串S='software',其长度为3的子串数目为( )。

    A.8
    B.7
    C.6
    D.5

    答案:C
    解析:
    本题考查数据结构基础知识。
    对于字符串S='software',其长度为3的子串有"sof"、"oft"、"ftw"、"twa"、"war"、"are",共6个。

  • 第20题:

    函数String(n,"strsdfsdfsdf")的功能是()

    • A、把数值型数据转换为字符串
    • B、返回由n个"s"字符
    • C、从字符串"strsdfsdfsdf")中取出前n个字符
    • D、从字符串中第n个字符的位置开始取子字符串

    正确答案:B

  • 第21题:

    两个字符串S1和S2的长度分别为m和n,求这两个字符串最大共同子串的时间复杂度为T(m,n),这最优的时间复杂度为()。


    正确答案:O(m*n)

  • 第22题:

    单选题
    设字符串S=”Olympic”,S的非字串的数目是()
    A

    28

    B

    29

    C

    16

    D

    17


    正确答案: A
    解析: 暂无解析

  • 第23题:

    填空题
    两个字符串S1和S2的长度分别为m和n,求这两个字符串最大共同子串的时间复杂度为T(m,n),这最优的时间复杂度为()。

    正确答案: O(m*n)
    解析: 暂无解析