首页 > 软考
题目内容 (请给出正确答案)
[单选题]

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

A.n

B.n-1

C.n-2

D.2

查看答案
答案
收藏
如果结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能还需要:
您的账号:
发送账号密码至手机
发送
安装优题宝APP,拍照搜题省时又省心!
更多“若字符串s的长度为n(n>1),且其中的字符互不相同,则s的…”相关的问题
第1题
● 若字符串s 的长度为 n(n >1)且其中的字符互不相同,则 s 的长度为 2 的子串有 (35) 个。 (35)

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

(35)

A. n

B. n-1

C. n-2

D. 2

点击查看答案
第2题
若给fun函数的形参s传送字符串:"]]6354abcc"(其中]表示空格字符),则函数的返回值是【19】

若给fun函数的形参s传送字符串:"]]6354abcc" (其中]表示空格字符),则函数的返回值是【19】。

#include

long fun(char s[])

{long n;int sign;

for(;isspace(*s);s++);

sign=(*s==′-′)?-1:1;

if(*s==′+′||*s==′-′)s++;

for(n=0;isdigit(*s);s++)n=10*n+(*s-′0′);

return sign*n;

}

点击查看答案
第3题
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。 [说明] 我国现行使用的

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。

[说明]

我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB 11643-1989〗和〖GB 11643-1999〗。〖CB 11643-1989〗中规定的是15位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。〖GB 11643 -1999〗中规定的是18位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码C由本体码按如下过程求得:

(1)计算校验码和S=a18W18+a17W17+…+a2W2,其中i表示18位身份证号,码每一位的序号,从右至左,最左侧为18,最右侧为1;ai表示身份证号码第i位上的号码;wi表示第i位上的权值,其值为2i-1模11的结果;

(2)计算校验码值R,其值为校验和模11的结果;

(3)根据下面对应关系找出校验码C:

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。 [说明] 我国

由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。 [说明] 我国

在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。

代码中使用到的字符串函数及功能说明如下:

(1)Len(s):获取字符串s的长度;

(2)Left(s,1):返回字符串s左端长度为1的子串;

(3)Right(s,1):返回字符串s右端长度为1的子串;

(4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。

[Visual Basic代码]

’计算18位身份证号码

Private Sub Commandl_Click()

Dim code As String

Dim S As Integer

code = Textl. Text '提取15位身份证号码

If Len(code) < > 15 Then

MsgBox "ID 号码长度不正确,请检查!"

(1)

End If

code = Left(code, 6) + "19" + (2) (code, 9) '年份升位

S=0

For i = 18 To 2 Step -1 '计算校验码和

S = S + Clnf((3)) * (2 ^ (i - 1) Mod11)

Next i

(4) '计算校验码值

Select Case S '确定校验码

Case 0: code = code + "1"

Case 1: code = code + "0"

Case 2: code = code + "X"

Case Else: code = code + CStr((5))

End Select

Text2. Text = code '显示18位身份证号码

End Sub

点击查看答案
第4题
假设系统有n个进程共享资源R,且资源R的可用数为3,其中n≥3。若采用PV操作,则信号量S的取值范围
应为()。

A.-1~n-1 B.-3~3 C.-(n-3)~3 D.-(n-1)~1

点击查看答案
第5题
假设系统有 n 个进程共享资源 R,且资源 R 的可用数为 3,其中n ≥ 3,若采用 PV 操作, 则信号量 S
的取值范围应为().

A.-1~n-1

B.-3~3

C.- (n-3)~3

D.- (n-1)~1

点击查看答案
第6题
下列程序中的函数 strcpy2() 实现字符串两次复制 , 即将 t 所指字符串复制两次到 s 所指内

下列程序中的函数 strcpy2() 实现字符串两次复制 , 即将 t 所指字符串复制两次到 s 所指内存空间中 ,合并形成一个新的字符串。例如,若 t 所指字符串为 efgh ,调用 strcpy2 后, s 所指字符串为 efghefgh 。请填空。

#include <stdio.h>

#include <string.h>

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s++=*t++);

s= 【 1 5 】 ;

while(【 1 6 】 =*p++);

}

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1 ,str2); printf("%s\n",str1);

}

点击查看答案
第7题
试题四(共15分)阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】模式匹

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

【说明】

模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。

如果匹配成功,返回s在t中的位置,否则返回-1 。

KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:

1.在串t和串s中,分别设比较的起始下标i=J=O

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 <stdio.h>

nclude <stdliB.h>

include <string.h>

/*求next【】的值*/

void get_next(int *next, char *s, int Is) {

int i=0,j=-1;

next[0]=-1;/*初始化next[0]*/

while(i< ils){/*还有字符*/

if(j=-1l ls[i]=s[j]){/*匹配*/

j++;

i++;

if(s[i]一s[jl)

next [i]- next[j];

else

Next[i]=j;

}

else

J= next[j];

}

}

int kmp(int *next, char *t ,char *s, int.lt, int Is )

{

inti= 0,j =0 ;

while (i<lt && (1 ) {

if(j=-1 II 2_) {

i++ ;

j ++ ;

} else

(3) :

}

if (j>= ls)

Retum (4)

else .

retum-1;

【问题1】(8分)

根据题干说明,填充C代码中的空(1)~(4).

【问题2】(2分)

根据题干说明和C代码,分析出kmp算法的时间复杂度为 (5)(主串和子的长度分别为It和Is,用O符号表示)。

【问题3】(5分)

根据C代码,字符串“BBABBCAC”的next数组元素值为 (6) (直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC则函数Kmp的返回值是 (7)

点击查看答案
第8题
阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。 【函数2说明】 本题中的函数e

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数2说明】

本题中的函数encode()和decode()分别实现对字符串的变换和复原。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:

1.若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中。

2.若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它自己复制到新字符串中。

3.若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后续字符(包括后续字符是一个数字字符)重复复制n+1次到新字符串中。

4.以上述一次变换为一组,在不同组之间另插入一个下划线字符“-”用于分隔。例如。encode()函数对字符串26a3t2的变换结果为666_a_tttt_2

复原函数decode()做变换函数encode()的相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符。

假定调用变换函数encode()时的已知字符串中不包含下划线字符。

【函数2】

int encode(char*instr,char * outstr)

{

char*ip,*op,c;int k,n;

ip=instr;op=outstr;

while(*ip){

if (1) &&*(ip+1){

n= *ip -'0'+ 1;

c= *++ip;

for(k=0;k<=n;k++)

(2);

}

else (3);

*op++ ='-';

ip++;

}

if(op>outstr) (4);

*op='\0';

return op-outstr;

}

int decode(char * instr,char * outstr)

{char*ip,*op,c;int n;

ip=instr;op=outstr;

while(*ip){

c= *ip;n=0;

while(*ip==c && n<=10){ip++;n++;}

if (5) *op++='0'+n-1;

*op++=c;

if(* ip=='_',) (6);

}

* p='\0';

return op-outstr;

}

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

A.5+4+3+2+1

B.5+4+3+2

C.4+3+2+l

D.4+3+2

点击查看答案
第10题
● 设 S 是一个长度为 5 的字符串,其中的字符各不相同,则计算 S 中互异的非平凡子串(非空且不同于
S 本身)数目的算式为(41)。

(41)

A.5+4+3+2+1

B.5+4+3+2

C.4+3+2+1

D.4+3+2

点击查看答案
退出 登录/注册
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改