软件设计师模拟题及答案解析第二十七套Word文件下载.docx
《软件设计师模拟题及答案解析第二十七套Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件设计师模拟题及答案解析第二十七套Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
其性能改进有限,价格却很昂贵
RAID7
具有最优化的异步高I/O速率和高数据传输率的磁盘阵列
是对RAID6级的改进。
在这种阵列中的所有磁盘,都具有较高的传输速度,有着优异的性能,是目前最高档次的磁盘阵列
RAID10
建立在RAID0和RAID1基础上的高可靠性与高性能的组合
利用了RAID0极高的读写效率和RAID1较高的数据保护和恢复能力,使RAID10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持该等级
表6几种RAID级别的对比表
2.BecauseWebServersareplatformandapplication(7)theycansendorrequestdatafromlegacyorexternalapplicationsincludingdatabases.Allreplies,onceconvertedinto(8)mark-uplanguage,canthenbetransmittedtoa(9).Usedinthisway,Intranetscan(10)lowerdesktopsupportcosts,easylinkswithlegacyapplicationsanddatabasesand,(11)all,easeofuse.
【供选择的答案】
(7)A.relatedB.dependentC.coupledD.independent
(8)A.supertextB.plaintextC.hypertextD.ciphertext
(9)A.clientB.browserC.serverD.router
(10)A.getB.ignoreC.requireD.offer
(11)A.aboveB.aroundC.aboutD.abort
(7)~(11)D、C、B、D、A。
参考译文:
由于Web服务是基于独立的平台和应用程序,因此它能够从包含数据库的现有的(或外部的)应用软件发送和接收数据。
所有返回的结果一旦转换成超文本标记语言,就能传送给浏览器。
使用这种方式,企业内部网(Intranet)可以提供更低的桌面支持成本,容易将现有的应用软件和数据库简单地连接起来,此外,它更容易使用。
3.设函数的功能是交换X和y的值,且通过正确调用返回交换结果。
不能正确执行此功能的函数是(12)
(12)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;
*y=p;
D.fund(int*x,int*y)
{
*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
(12)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。
4.设有定义“chara[10]={"
abcd"
},*p=a;
"
,则*(p+4)的值是(123)
(13)A."
abCd"
B.’d’
C.’\0’
D.不能确定
(13)C。
若有chara[10]="
,*p=a,则指针变量p指向a[0]。
在表达式*(p+4)中,p+4指向a[4],*(p+4)就是a[4]。
由于用字符"
给字符数组a赋初值,a[4]的值是字符串结束标记符’\0’。
所以解答是C。
5.设有代码"
int(*ptr)[10];
”,其中的ptr是(124)
(14)A.10个指向整型变量的指针
B.指向10个整型变量的函数指针
C.一个指向具有10个元素的一维数组的指针
D.具有10个指针元素的一维数组
(14)C。
代码“int(*ptr)[10];
”的分析过程是,因圆括号,括号内的ptr先与字符*结合,字符*修饰标识符ptr是一种指针;
接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;
再有方括号中的10,说明这种数组有10个元素。
至此,ptr是指向含10个元素的一维数组的指针。
最后,是最前面的int,表示数组元素是int类型的。
所以,ptr是一个指向具有10个int型元素的一维数组的指针。
另外,要是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);
在上述代码中,函数有一个int型的形参。
要是D,其意义与A相同,上述代码应写成“int*ptr[10];
”,即ptr是一个有10个元素的数组,数组元素是指向整型变量的指针。
6.若有以下定义,则数值为4的表达式是(15)
intw[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=W;
(15)A.*w[1]+l
B.p++,*(p+1)
C.w[2][2]
D.p[1][1]
(15)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。
7.若有下面的程序片段,则对数组元素的错误的引用是(16)
inta[12]={0},*p[3],**pp,i;
for(i=0;
i<
3;
i++)p[i]=&
a[i+4];
pp=P;
16)A.pp[0][1]
B.a[10]
C.p[3][l]
D.*(*(p+2)+2)
(16)C。
上述代码定义变量a是有12个整型元素的数组,它的初值全是0。
p是有三个元素的指针数组,每个指针能指向整型变量。
哪是指针的指针,它能指向一个指向整型变量的指针,i是一个整型变量。
执行代码for(i=0;
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]。
8.若有如下定义和语句,则输出结果是(17)
int**pp,*p,a=10,b=20;
PP=&
p;
P=&
a;
b;
printf("
%d%d"
,*p,**PP);
(17)A.10,20
B.10,10
C.20,10
D.20,20
(17)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。
9.若有以下定义和语句,则对w数组元素的非法引用是(18)
intw[2][3],(*pw)[3];
pw=w;
(18)A.*(w[0]+2)
B.*pw[2]
C.pw[0][0]
D.*(pw[l]+2)
(18)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。
10.若有下列说明,则数值为4的表达式是(19)
inta[12]={l,2,3,4,5,6,7,8,9,10,11,12};
charc=‘a’,d,g;
(19)A.a[g-c]
B.a[4]
C.a[’d’-’c’]
D.a[’d’-c]
(19)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。
11.设有定义:
chars[12]={"
string"
};
则printf("
,strlen(s));
的输出是(20)
(20)A.6
B.7
C.11
D.12
(20)A。
在C语言中,字符串是指在有效字符之后有字符率结束标记符的字符列,并约定字符串的长度是指字符率中有效字符个数,不包括字符串的结束标记符。
存放于字符数组s中的字符串是“string”,该字符串的长度为6,所以输出该字符串的长度应是6。
正确的解答是A。
A错误的原因是整数数组不可以用字符串对其初始化。
B错误的原因是,数组初始化时,初始化指定的值的个数多于数组的元素个数。
C错误的原因是,能用字符串初始化的只;
有字符指针变量,或字符数组。
字符率不能对其它类型的变量初始化,包括字符变量。
D是正确的,因为字符数组可以用小整数(作为字符的ASCII代码值)对其元素初始化。
12.语句"
strlen("
atsol2\1\\"
));
的输出结果是(21)
(21)A.11
B.10
C.9
D.8
(21)C。
字符串中的字符可以是一般的普通字符,也可以是由反斜杠字符开头的转义字符。
在字符串"
abso12\11\\"
中,有三个转义字符,它们是、\1、\\,所以该字符串的有效字符个数是9。
所以正确的回答是C。
13.函数调用“strcat(strcpy(strl,str2),str3)”的功能是(22)
(22)A.将字符串strl复制到字符串str2中后再连接到字符串str3之后
B.将字符串strl连接到字符串str2中后再复制到字符率str3之后
C.将字符串str2复制到字符串strl中后再将字符串str3连接到字符串strl之后
D.将字符串str2连接到字符率strl之后再将字符串strl复制到字符串str3中
(22)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。
14.设有如下定义,则正确的叙述为(23)
charx[]={"
abcdefg"
chary[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’};
(23)A.数组x和数组y等价
B.数组x和数组y长度相同
C.数组X的长度大于数组y的长度
D.数组X的长度小于数组y的长度
(23)C。
不指定数组长度的字符数组定义,其所需要的字节数可由初始化中给出的值的个数确定。
字符数组可以用字符串初始化,也可用字符逐个给字符数组的元素初始化。
但用字符初始化时,尽管给出了字符串中的全部字符,还是不会自动有字符率结束字符。
但字符串初始化自动会含有字符串的结束标记符,字符串初始化所需要的字节个数会比用同样多的字符初始化多1个字节。
所以只有C才是正确的。
117.设a=3,b=4执厅‘printf(”%d,%d’,(a,b),(b,a));
”的输出是(23)
(23)A.3,4
B.4,3
C.3,3
D.4,4
在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符d要求输出项内容以十进制整数形式输出。
第一个输出项(a,b)是一个逗号表达式,该表达式的值是b的值,输出4。
接着输出字符逗号。
第二个输出项(b,a)的值是a的值,输出3。
所以语句执行将输出4,3。
正解的选择是C。
15.使用“Scanf("
X=%f,y=%f"
,&
x,&
y)”,要使X,y均为1.25,正确的输入是(24)
(24)A.1.25,1.25
B.1.251.25
C.x=1.25,y=1.25
D.X=1.25y=1.25
(24)C。
解析:
格式输入函数的格式字符串中的字符可以分成三类:
空格类字符、其它普通字符和格式转换说明。
其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符。
普通字符要求输入字符与其完全相同。
格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储到对应输入项所指定的存储位置中。
函数调用scanf(“x=%f,y=%f,&
y)以普通字符X=开头,输入时也要先输入X=。
接着是一个浮点数输入格式,所有能构成一个浮点数1.25的字符序列都能满足要求。
接着是普通字符列“,y=”,在输入的浮点数之后也要有字符列“,y=”。
最后又是浮点数输入格式,同样所有能构成一个浮点数1.25的字符序列都能满足要求。
问题给出的供选择答案中只有x=1.25,y=1.25是能满足上述要求的。
所以正确选择是C。
16.设有inti=010,j=10;
则执行“printf("
%d,%d\n"
,++i,j--);
”的输出是(25)
(25)A.ll,10
B.9,10
C.010,9
D.10,9
(25)B。
变量i和j的初值分别为八进制数010和十进制数10,函数调用Printf(“%d,%d\n”,++i,j--)中,++i的值是变量i增1后的值,原来值是八进制数010,等于十进制数8,输出9。
j--的值是变量j减1之前的值,输出10。
格式字符申中的逗号是普通字符照原样输出。
所以问题给出的格式输出函数调用将输出9,10。
正确的解答是B。
17.设a,b为字符型变量,执行"
scanf("
a=%c,b=%c"
a,&
b)"
后使a为’A’,b为’B’,从键盘上的正确输入是(26)
(26)A.’A”B’
B.’A’,’B’
C.A=A,B=B
D.a=Ab=B
(26)D。
函数调用scanf("
c=%c,b=%c"
c,&
b)中,普通字符必须按格式字符串要求照原样输入,c格式对紧接的任何字符都输入。
所以实现问题的要求,输入字符列应为“a=A,b=B”。
另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。
但用字符格式输入字符时,在要输入字符前后不必另键人单引号。
若键人单引号,则这个单引号也将作为字符被输入。
正确的解答是D。
18.设X、y、Z、t均为int型变量,则执行以下语句后,t的值为(139)
x=y=z=1;
t=++x||++y&
&
++z;
(27)A.不定值
B.2
C.l
D.0
(27)C。
语句序列“x=y=z=l;
”使变量x的值为1,变量t是赋一个逻辑表达式的值。
在C语言中,由逻辑与和逻辑或构成的逻辑表达式有特别的计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式的结果时,就立即结束逻辑表达式的计算,不再计算后继逻辑子表达式。
本题的逻辑表达式是两个运算分量的逻辑或,而且左运算分量++X的值为非0,立即得到逻辑或运算的结果为1,并将1赋给变量t,所以变量t的值为1。
正确解答为C。
19.设x、y、z均为int型变量,则执行以下语句后,x、y,z的值为(140)
X=1;
y=0;
Z=2;
y++&
++Z||++X;
(28)A.2、l、3
B.2、0、3
C.2、l、3
D.2、1、2
(28)D。
语句序列“x=l;
z=2;
++z||++x;
”先使变量x的值为1,变量y的值为0,变量Z的值为2。
由逻辑与和逻辑或构成的逻辑表达式的特别计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑子表达式的结果时,就立即结束逻辑子表达式的计算,不再计算该逻辑子表达式。
计算y+