软件设计师考前模拟试题及答案解析六

企业动态
以下是软件设计师考前模拟试题及答案解析六。

101. 廉价磁盘冗余阵列(RAID)是利用一台磁盘阵列控制器来管理和控制一组磁盘驱动器,组成一个高度可靠的、快速的大容量磁盘系统。以下关于RAID的叙述中,不正确的是  (106)  。

(106) A.RAID采用交叉存取技术,提高了访问速度

B.RAID0使用磁盘镜像技术,提高了可靠性

C.RAID3利用一个奇偶校验盘完成容错功能,减少了冗余磁盘数量

D.RAID6设置了一个专用的、可快速访问的异步校验盘

参考答案:(106)B。

解析:廉价磁盘冗余阵列(RAID)级别是指磁盘阵列中硬盘的组合方式,不同级别的RAID为用户提供的磁盘阵列在性能上和安全性的表现上也有不同,详见表6。

表6 几种RAID级别的对比表

级 别

描 述

优 点

缺 点

RAID0

没有容错设计的条带磁盘阵列,仅提供并行交叉存取功能

有效地提高磁盘I/O速度

磁盘系统的可靠性不好

RAID1

具有磁盘镜像和磁盘双工功能

可利用并行读/写特性,将数据块同时写入主盘和镜像盘,故比传统的镜像盘速度快

磁盘利用率只有50%

RAID2

增加了汉明码校验与纠错(Hamming Code ECC)功能

是早期为了进行即时数据校验而研制的一种技术,针对当时对数据安全敏感的领域,如金融服务等

由于花费太大,成本昂贵,目前己不用

RAID3

具有并行传输和校验功能

利用一台奇偶校验盘来完成容错功能。比起磁盘镜像,减少了所需的冗余磁盘数

 

RAID4

具有独立的数据硬盘与共享的校验硬盘

与RAID 3相比,RAID 4是一种相对独立的形式

 

RAID5

具有独立的数据磁盘和分布式校验块的磁盘阵列

每个驱动器都有独立的数据通路,独立地进行读/写,无专门的校验盘。用于纠错的校验信息以螺旋方式散布在所有的数据盘上。RAB5常用于I/O较频繁的事务处理上

 

RAID6

具有独立的数据硬盘与两个独立的分布式校验方案

设置了一个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路

其性能改进有限,价格却很昂贵

RAID7

具有***化的异步高I/O速率和高数据传输率的磁盘阵列

是对RAID 6级的改进。在这种阵列中的所有磁盘,都具有较高的传输速度,有着优异的性能,是目前***档次的磁盘阵列

 

RAID10 建立在RAID 0和RAID 1基础上的高可靠性与高性能的组合 利用了RAID 0极高的读写效率和RAID 1较高的数据保护和恢复能力,使RAID 10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持该等级  

102. Because Web Servers are platform and application   (107)   they can send or request data from legacy or external applications including databases. All replies, once converted into   (108)   mark-up language, can then be transmitted to a   (109)   .Used in this way, Intranets can   (120)   lower desktop support costs, easy links with legacy applications and databases and,  (121)   all, ease of use.

【供选择的答案】

(107) A.related   B.dependent   C.coupled   D.independent

(108) A.supertextB.plaintextC.hypertextD.ciphertext

(109) A.client B.browserC.server D.router

(120) A.get  B.ignoreC.requireD.offer

(121) A.above   B.aroundC.aboutD.abort

参考答案:(68)~(72)D、C、B、D、A。

参考译文:由于Web服务是基于独立的平台和应用程序,因此它能够从包含数据库的现有的(或外部的)应用软件发送和接收数据。所有返回的结果一旦转换成超文本标记语言,就能传送给浏览器。使用这种方式,企业内部网(Intranet)可以提供更低的桌面支持成本,容易将现有的应用软件和数据库简单地连接起来,此外,它更容易使用。

103.设函数的功能是交换X和y的值,且通过正确调用返回交换结果。不能正确执行此功能的函数是(122)

(122)A. funa(int*x,int*y)

{int*p;

*p=*x;*x=*y;*y=*p;

}

B. funb(intx,inty)

{intt;

t=x;x=y;y=t;

}

C. func(int*x,int*y)

{intp;

p=*x;*x=*y;*y=p;

}

D. fund(int*x,int*y)

{

*x=*x+*y;*y=*x-*y;*x=*x-*y;

}

参考答案:(122)A,B。

解析:设计实现交换两个变量值的函数。希望函数调用能改变调用环境中的变量,方法之一是让函数设置指针类型的形参,实参传送给形参的是希望交换值的两个变量的指针。函数的两个形参得到这两个变量的指针后,函数就能通过形参间接引用要交换值的变量,或引用它们的值,或改变它们的值。从而实现从函数传回信息存于调用环境的变量中。以上所述是设计交换变量值函数的一般原则,具体编写函数时还需注意对上述原则的正确应用。

对于函数funa,该函数的定义满足设置指针形参,并通过指针形参间接引用环境变量的要求。但是在函数体中定义了指针变量p,并在p宋明确设定它所指向的变量下,代码*p=*x企图将值存入它所指的变量中,这是初学者经常出现的一种严重的错误。该函数因有错,不能实现交换变量值的功能。

对于函数funb,该函数不定义指针形参,函数体也没有可用的指针间接引用调用环境中的变量,所以该函数也不能实现交换变量值的功能。

对于函数func,该函数正确定义了指针形参,函数体也正确通过指针形参间接引用环境中的变量,并正确定义了自己的局部变量。该函数能实现交换变量值的功能。

对于函数fund,该函数也正确定义指针形参和函数体通过形参间接引用环境变量。特别要指出的是,该函数是利用*x和*y的;日值与新值之间的关系实现问题要求的。其中***个赋值使。x存有原来未交换之前的*x与*y之和;第二个赋值从这个和中减去原来的*y,并将差赋给*y,使*y的值是交换之前的*x的值;第三个赋值再次从和中减去新的*y,即减去交换之前的*x,这个差就是交换之前的*y,并将差赋给*x。经以上三个赋值,实现两变量之间的值交换。所以不能正确执行交换变量值的函数是funa和funb,即正确选择是A,B。

104.设有定义“chara[10]={"abcd"},*p=a;",则*(p+4)的值是(123)

(123) A. "abCd"

B. ’d’

C. ’\0’

D. 不能确定

参考答案:(123)C。

解析:若有chara[10]="abcd",*p=a,则指针变量p指向a[0]。在表达式*(p+4)中,p+4指向a[4],*(p+4)就是a[4]。由于用字符"abcd"给字符数组a赋初值,a[4]的值是字符串结束标记符’\0’。所以解答是C。

105.设有代码"int(*ptr)[10];”,其中的ptr是(124)

(124)A. 10个指向整型变量的指针

B. 指向10个整型变量的函数指针

C. 一个指向具有10个元素的一维数组的指针

D.具有10个指针元素的一维数组

参考答案:(124)C。

解析:代码“int(*ptr)[10];”的分析过程是,因圆括号,括号内的ptr先与字符*结合,字符*修饰标识符ptr是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的10,说明这种数组有10个元素。至此,ptr是指向含10个元素的

一维数组的指针。***,是最前面的int,表示数组元素是int类型的。所以,ptr是一个指向具有10个int型元素的一维数组的指针。所以解答是C。另外,要是A,10个指向整型变量的指针,就是一个指针数组,上述代码应写成“int*ptr[10];”,即ptr是一个有10个指向整型变量的数组。要是B,返回值是指向10个整型变量的函数的指针,上述代码应写成“int(*(*ptr)())[10];”,即ptr是指针,指向一种函数,函数的返回值又是一种指针,指向10个元素的数组,数组的元素是整型的。下面的代码是这样的函数指针和函数的例子:

#include

inta[][10]={{1,2,3,4,5,6,7,8,9,0},{0,1,2,3,4,5,6,7,8,9}};

int(*(*ptr)(int))[10];

int(*f(intn))[10]

{returna+n;

}

voidmain()

{int(*p)[10],*q;

ptr=f;/*让ptr指向函数f*/

P=(*ptr)(0);

q=*p;

printf("%d ",*p);

P=(*ptr)(l);

q=*p;

printf("%d ",*q);

}

在上述代码中,函数有一个int型的形参。要是D,其意义与A相同,上述代码应写成“int*ptr[10];”,即ptr是一个有10个元素的数组,数组元素是指向整型变量的指针。

106.若有以下定义,则数值为4的表达式是(125)

intw[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=W;

(12***. *w[1]+l

B. p++,*(p+1)

C. w[2][2]

D. p[1][1]

参考答案:(125)D。

解析:二维数组定义有多种赋初值的办法,问题给出的代码是按行给数组的部分元素赋初值。它们分别是w[0][0]=0.w[0][1]=1、w[1][1]=2.w[1][1]=4,w[2][0]=5,w[2][1]=8。根据约定,未指定初值的元素自动置全0值。指针变量p是一个指向具有四个int型元素的一维数组的指针,定义时的初值使它指向数组W的***行。A的代码,*w[1]+1中的W[l]是指向w[l][0]的指针,*w[1]就是w[1][0],其值是2,*w[1]+l的值是3。B的代码是逗号表达式,“p++,*(p+1)”先使p指向数组w的第二行,*(p+l)中的p+l是指向数组w的第三行,*(p+1)是指针值,指向数组w的第三行的***个元素,即&w[2][0].C的代码w[2][2]引用数组W第三行的第三列元素,其值是0。D的代码p[1][l]引用数组W第二行的第二列元素w[1][1],其值是4。所以解答是D。

107. 若有下面的程序片段,则对数组元素的错误的引用是(126)

inta[12]={0},*p[3],**pp,i;

for(i=0;i<3;i++)p[i]=&a[i+4];

pp=P;

(126)A. pp[0][1]

B. a[10]

C. p[3][l]

D. *(*(p+2)+2)

参考答案:(126)C。

解析:上述代码定义变量a是有12个整型元素的数组,它的初值全是0。p是有三个元素的指针数组,每个指针能指向整型变量。哪是指针的指针,它能指向一个指向整型变量的指针,i是一个整型变量。执行代码for(i=0;i<3;i++)P[i]=&a[i+4]使指针数组p的元素p[0]指向a[4],p[l]指向a[5],p[2]指向a[6]。代码pp=p使指针变量pp指向p[0]。A代码pp[0][l]用指针表达可等价地写成*(*pp+l)。其中*pp就是p[0],p[0]的值是&a[4],*pp+1的值是&a[4]+1=&a[5],*(*pp+1)就是a[5]。B代码a[l0]当然是引用数组a的元素。C代码p[3][1]数组p只有三个元素,没有p[3],所以是错误的。D代码*(*(p+2)+2)中的(p+2)是&p[2],*(p+2)是p[2],其值是&a[6],*(p+2)+2的值是&a[8],*(*(p+2)+2)引用的是a[8]。所以解答是C。

108.若有如下定义和语句,则输出结果是(127)

int**pp,*p,a=10,b=20;

PP=&p;P=&a;P=&b;printf("%d%d ",*p,**PP);

(127)A.10,20

B. 10,10

C. 20,10

D. 20,20

参考答案:(127)D。

解析:上述代码定义变量pp是指针的指针,它能指向一个指向整型变量的指针。定义变量p是指针,它能指向一个整型变量。a是一个整型变量,它有初值10。b也是一个整型变量,它有初值20。代码pp=&p使pp指向p,p=&a使p指向a,p=&b又使p指向b,不再指向a。所以。p是引用b,其值为20。**pp是通过pp间接引用p,再通过p间接引用b,所以也是20。所以解答是D。

109.若有以下定义和语句,则对w数组元素的非法引用是(128)

intw[2][3],(*pw)[3];pw=w;

(128)A. *(w[0]+2)

B. *pw[2]

C. pw[0][0]

D. *(pw[l]+2)

参考答案:(128)B。

解析:上述代码定义2行3列的二维数组w,定义能指向有3个整型元素一维数组的指针pw,并让pw指向数组w的***行。A代码*(w[0]+2)中的w[0]是&w[0][0],w[0]+2是&w[0][2],所以*(w[0]+2)就是w[0][2]。B代码*pw[2]中的pw[2]是&w[2][0],该数组w只有2行,没有w[2][0],所以代码*pw[2]是对数组W元素的非法引用。C代码pw[0][0]就是w[0][0]。D代码*(pw[l]+2)中的pw[1]就是*(pw+l),即&w[l][0],pw[l]+2就是&w[l][2],所以*(pw[1]+2)就是w[1][2]。所以解答是B。

110. 若有下列说明,则数值为4的表达式是(129)

inta[12]={l,2,3,4,5,6,7,8,9,10,11,12};

charc=‘a’,d,g;

(129)A. a[g-c]

B. a[4]

C. a[’d’-’c’]

D. a[’d’-c]

参考答案:(129)D。

解析:数组元素的下标自0开始顺序编号,值为4的元素是a[3]。所以只有下标表达式的值为3的才是正确的。下标表达式g-C中的的变量g和c的值是还未被设定的,其值不确定。a[4]的值为5,下标为4是不对的。’d’-’c’的值为1,a[l]的值是2,所以也是不对的。变量c的值为’a’,’d’-c=3,所以正确解答是D。

111.设有定义:"chars[12]={"string"};"则printf("%d ",strlen(s));的输出是(130)

(130)A. 6

B. 7

C. 11

D. 12

参考答案:(130)A。

解析:在C语言中,字符串是指在有效字符之后有字符率结束标记符的字符列,并约定字符串的长度是指字符率中有效字符个数,不包括字符串的结束标记符。存放于字符数组s中的字符串是“string”,该字符串的长度为6,所以输出该字符串的长度应是6。正确的解答是A。

112.下列语句中,正确的是(131)

(131)A. chara[3][]={’abc",’1’};

B. chara[][3]={’abc’,’l’};

C. chara[3][]={’a’,"1"};

D. Vchara[][3]={"a","1"};

参考答案:(131)D。

解析:如定义数组时有初始化,其***维的长度可以省缺,由系统根据初始化时的初值个数确定,而其它维的长度是不可以缺省的。对二维字符数组的初始化,可以按行用字符串对其初始化,也可以按二维数组元素的存储顺序逐一用字符对其元素初始化。在供选择解答A和C中,有不是***维的长度被缺省,所以是错误的。在供选择解答A和B中,还将字符串常量写作’abc’,这也是错误的。只有D,用字符率按行给二维字符数组初始化,这才是正确的。正确构解答是D。

113.合法的数组定义是(132)

(132)A. inta[]={"string"}

B. inta[5]={0,1,2,3,4,5};

C. chara={"string"}

D. chara[]={0,1,2,3,4,5};

参考答案:(132)D。

解析:A错误的原因是整数数组不可以用字符串对其初始化。B错误的原因是,数组初始化时,初始化指定的值的个数多于数组的元素个数。C错误的原因是,能用字符串初始化的只;有字符指针变量,或字符数组。字符率不能对其它类型的变量初始化,包括字符变量。D是正确的,因为字符数组可以用小整数(作为字符的ASCII代码值)对其元素初始化。

114.语句"printf("%d "strlen("ats ol2\1\\"));"的输出结果是(133)

(133)A. 11

B. 10

C. 9

D. 8

参考答案:(133)C。

解析:字符串中的字符可以是一般的普通字符,也可以是由反斜杠字符开头的转义字符。在字符串"abs o12\11\\"中,有三个转义字符,它们是、\1、\\,所以该字符串的有效字符个数是9。所以正确的回答是C。

115.函数调用“strcat(strcpy(strl,str2),str3)”的功能是(134)

(134)A. 将字符串strl复制到字符串str2中后再连接到字符串str3之后

B. 将字符串strl连接到字符串str2中后再复制到字符率str3之后

C. 将字符串str2复制到字符串strl中后再将字符串str3连接到字符串strl之后

D. 将字符串str2连接到字符率strl之后再将字符串strl复制到字符串str3中

参考答案:(134)C。

解析:函数调用strcat(s1,s2)是将s2字符串复制连接到s1字符串之后,使s1字符串变得更长。函数调用strcpy(s1,s2)是将s2字符串复制到s1,使s1字符串的内容与s2字符串的内容相同。函数调用strcat(strcpy(strl,str2),str3)是先执行strcpy(strl,str2),然后再执行strcat(strl,str3),所以其功能是将字符串str2复制到字符串strl中,然后再将字符串str3复制连接到字符串strl之后。正确的选择是C。

116.设有如下定义,则正确的叙述为(135)

charx[]={"abcdefg"};

chary[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’};

(13***. 数组x和数组y等价

B. 数组x和数组y长度相同

C. 数组X的长度大于数组y的长度

D. 数组X的长度小于数组y的长度

参考答案:(134)C。

解析:不指定数组长度的字符数组定义,其所需要的字节数可由初始化中给出的值的个数确定。字符数组可以用字符串初始化,也可用字符逐个给字符数组的元素初始化。但用字符初始化时,尽管给出了字符串中的全部字符,还是不会自动有字符率结束字符。但字符串初始化自动会含有字符串的结束标记符,字符串初始化所需要的字节个数会比用同样多的字符初始化多1个字节。所以只有C才是正确的。

117.设a=3,b=4执厅‘printf(”%d,%d’,(a,b),(b,a));”的输出是(135)

(13***. 3,4

B. 4,3

C. 3,3

D. 4,4

参考答案:(135)C。

解析:在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符d要求输出项内容以十进制整数形式输出。***个输出项(a,b)是一个逗号表达式,该表达式的值是b的值,输出4。接着输出字符逗号。第二个输出项(b,a)的值是a的值,输出3。所以语句执行将输出4,3。正解的选择是C。

118.使用“Scanf("X=%f,y=%f",&x,&y)”,要使X,y均为1.25,正确的输入是(136)

(136)A. 1.25,1.25

B. 1.251.25

C. x=1.25,y=1.25

D. X=1.25y=1.25

参考答案:(136)C。

解析:格式输入函数的格式字符串中的字符可以分成三类:空格类字符、其它普通字符和格式转换说明。其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符。普通字符要求输入字符与其完全相同。格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储到对应输入项所指定的存储位置中。函数调用scanf(“x=%f,y=%f,&x,&y)以普通字符X=开头,输入时也要先输入X=。接着是一个浮点数输入格式,所有能构成一个浮点数1.25的字符序列都能满足要求。接着是普通字符列“,y=”,在输入的浮点数之后也要有字符列“,y=”。***又是浮点数输入格式,同样所有能构成一个浮点数1.25的字符序列都能满足要求。问题给出的供选择答案中只有x=1.25,y=1.25是能满足上述要求的。所以正确选择是C。

119.设有inti=010,j=10;则执行“printf("%d,%d\n",++i,j--);”的输出是(137)

(137)A. ll,10

B. 9,10

C. 010,9

D. 10,9

参考答案:(137)B。

解析:变量i和j的初值分别为八进制数010和十进制数10,函数调用Printf(“%d,%d\n”,++i,j--)中,++i的值是变量i增1后的值,原来值是八进制数010,等于十进制数8,输出9。j--的值是变量j减1之前的值,输出10。格式字符申中的逗号是普通字符照原样输出。所以问题给出的格式输出函数调用将输出9,10。正确的解答是B。

120.设a,b为字符型变量,执行"scanf("a=%c,b=%c",&a,&b)"后使a为’A’,b为’B’,从键盘上的正确输入是(138)

(138)A. ’A”B’

B.  ’A’,’B’

C.  A=A,B=B

D.  a=Ab=B

参考答案:(138)D。

解析:函数调用scanf("c=%c,b=%c",&c,&b)中,普通字符必须按格式字符串要求照原样输入,c格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为“a=A,b=B”。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是D。

【编辑推荐】

  1. 2009年11月软件设计师预测题及答案解析四
  2. 2009年11月软件设计师预测题及答案解析三
  3. 2009年11月软件设计师预测试题及答案解析二
责任编辑:张攀 来源: 希赛教育
相关推荐

2009-11-02 14:27:00

软件设计师试题答案

2009-11-02 14:27:00

软件设计师试题答案

2009-11-02 14:28:00

软件设计师试题答案

2009-11-02 14:29:00

软件设计师试题答案

2010-05-14 10:20:13

软件设计师英语试题答案

2009-10-27 15:28:39

软件设计师预测试题

2009-11-05 09:59:16

软件设计师模拟试题及答案

2009-10-28 15:36:00

软件设计师试题答案

2009-10-28 09:46:43

2009-10-27 16:14:41

2009-10-27 14:36:11

软件设计师试题答案

2010-03-23 11:40:11

软考

2009-11-02 14:24:00

2009-11-02 14:30:00

网络工程师试题答案

2009-11-02 14:37:00

网络工程师试题答案

2009-11-02 14:28:00

网络工程师试题答案

2009-11-02 14:28:00

网络工程师试题答案

2009-11-02 14:37:00

网络工程师试题答案

2010-05-04 13:10:02

软考软件设计师

2009-10-25 10:55:08

信息系统项目管理师预测试题
点赞
收藏

51CTO技术栈公众号