计算机软考软件设计师考前练习试题及答案Word下载.docx

上传人:b****6 文档编号:17087086 上传时间:2022-11-28 格式:DOCX 页数:12 大小:20.68KB
下载 相关 举报
计算机软考软件设计师考前练习试题及答案Word下载.docx_第1页
第1页 / 共12页
计算机软考软件设计师考前练习试题及答案Word下载.docx_第2页
第2页 / 共12页
计算机软考软件设计师考前练习试题及答案Word下载.docx_第3页
第3页 / 共12页
计算机软考软件设计师考前练习试题及答案Word下载.docx_第4页
第4页 / 共12页
计算机软考软件设计师考前练习试题及答案Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

计算机软考软件设计师考前练习试题及答案Word下载.docx

《计算机软考软件设计师考前练习试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《计算机软考软件设计师考前练习试题及答案Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

计算机软考软件设计师考前练习试题及答案Word下载.docx

*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;

(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]="

,*p=a,则指针变量p指向a[0]。

在表达式*(p+4)中,p+4指向a[4],*(p+4)就是a[4]。

因为用字符"

给字符数组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型元素的一维数组的指针。

另外,要是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个元素的数组,数组元素是指向整型变量的指针。

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

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

  (125)A.*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++)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]。

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

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

  PP=&

p;

P=&

a;

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。

  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("

,strlen(s));

的输出是(130)

  (130)A.6

  B.7

  C.11

  D.12

(130)A。

在C语言中,字符串是指在有效字符之后有字符率结束标记符的字符列,并约定字符串的长度是指字符率中有效字符个数,不包括字符串的结束标记符。

存放于字符数组s中的字符串是“string”,该字符串的长度为6,所以输出该字符串的长度应是6。

准确的解答是A。

A错误的原因是整数数组不能够用字符串对其初始化。

B错误的原因是,数组初始化时,初始化指定的值的个数多于数组的元素个数。

C错误的原因是,能用字符串初始化的只;

有字符指针变量,或字符数组。

字符率不能对其它类型的变量初始化,包括字符变量。

D是准确的,因为字符数组能够用小整数(作为字符的ASCII代码值)对其元素初始化。

  114.语句"

strlen("

atsol2\1\\"

));

的输出结果是(133)

  (133)A.11

  B.10

  C.9

  D.8

(133)C。

字符串中的字符能够是一般的普通字符,也能够是由反斜杠字符开头的转义字符。

在字符串"

abso12\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’};

  (135)A.数组x和数组y等价

  B.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1