C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx

上传人:b****8 文档编号:11462115 上传时间:2023-03-01 格式:DOCX 页数:25 大小:105.13KB
下载 相关 举报
C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx_第1页
第1页 / 共25页
C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx_第2页
第2页 / 共25页
C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx_第3页
第3页 / 共25页
C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx_第4页
第4页 / 共25页
C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx

《C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx》由会员分享,可在线阅读,更多相关《C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx(25页珍藏版)》请在冰豆网上搜索。

C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx.docx

C++习题11下列字符列中可作为C++语言程序自定义标识符是B02运算符+docx

C++习题

1.1.下列字符列中,可作为C++语言程序自定义标识符是(B)0

A.switch

B.fileC.break

D.do

C.-40D.-60

循环执行两次

有语法错误

D)o

x=3;

2.运算符+、<=、=、%中,优先级最低的运算符是(C)。

A.+B.<=C.=D.%

3.设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是(C)。

A.0,0B.0,1C.1,0D.1,1

4.字符串“四\乂43|>困\102敏i”的长度是(B)。

A.8B.9C.16D.17

5.设有代码"inta=6;",则执行了语句"a+=a-=a*a;"后,变量a的

值是(D)o

A.0B.-24

6.voidmain()

{intx=-l:

do

{x=x*x;}

while(!

x);}

下列说法正确的是(C)。

A.是死循环B.

C.循环执行一次D.

7.下面有关for循环的正确描述是(

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来

8.下面程序段(C)o

if(!

y){cout<

cout«"世';}

while(l<=x<=2);(l<=x)=1,0bool型

A.将输出㈱B.将输出##*

C.是死循环D.含有不合法的控制表达式

9.以下正确的说法是(D)o

A.用户若需要调用标准函数,调用前必须重新定义

B.用户可以直接调用所有标准库函数

C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数

D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数

10.在参数传递过程中,对形参和实参的要求是(B)o

A.函数定义时,形参一直占用存储空间

B.实参可以是常量、变量或表达式

C.形参可以是常量、变量或表达式

D.形参和实参类型和个数都可以不同

11.对数组名作函数的参数,下面描述正确的是(B)o

A.数组名作函数的参数,调用时将实参数组复制给形参数组

B.数组名作函数的参数,主调函数和被调函数共用一段存储单元

C.数组名作参数时,形参定义的数组长度不能省略

D.数组名作参数,不能改变主调函数中的数据

12.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;贝0(B)不是对a数组元素的正确引用(其中0WiClO)。

A.p[i]B.*(*(a+i))C.a[p-a]D.*(&a[i])

13.以下程序的输出结果是(B)。

ttinclude

voidmain()

{chars[]="12134211",*p;

intvl=0,v2=0,v3=0,v4=0;vlv2v3v4

for(p=s;*p;p++)2434

switch(*p)

{

case'I':

vl++;

case'3':

v3++:

case'2':

v2++;

default:

v4++;

}

cout«vl«z,,,/«v2«,,,,/«v3«/,,,,«v4«endl;

}

A.4,2,1,1B.4,7,5,8C.7,3,2,1D.8,8,8,8

二、

(1)c++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是(B)

A)面向过程B)面向对象C)安全性D)复用性

(2)C++语言的跳转语句中,对于break和continue说法正确的是(B)

A)break语句只应用与循环体中

B)continue语句只应用与循环体中

C)break是无条件跳转语句,continue不是

D)break和continue的跳转范围不够明确,容易产生问题

(3)for(intx=0,y=o;!

x&&y<=5;y++)语句执行循环的次数是(C)

A)0B)5C)6D)无次数

(4)考虑函数原型voidtest(inta,intb=7,char="*"),下面的函数调用中,

属于不合法调用的是(C)

A)test(5);B)test(5,8);C)test(6,"#")D)test(O,O."*");

⑴已知下列语句中的x和y都是int型变量,其中不正确的语句是(D)

A)y+=++x;B)++x+=y;C)y=x++;D)x++=y;

⑵若X是一个bool型变量,y是一个值为100的int型变量,则表达式!

x&&y>0的值(D)o

A)为trueB)为falseC)与x的值相同D)与x的值相反

(3)执行语句序列

intn;

cin»n;

switch(n){

case1:

case2:

coutvv'X';

case3:

case4:

coutvv'Y';break;

default:

cout<<1Z*;}

时,不可能出现的情况号[A]。

_

A)显示:

XB)显示:

YC)显示:

ZD)显示:

XY

(4)执行语句序列

intx;

cin»x;

if(x>250)coutvv'X';

if(x<250)coutvv'Y';

elsecoutvv'X';

时,不可能出现的情外是[C]。

A)显示:

XB)显示:

YC)显示:

XYD)显示:

XX

(5)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是[A]。

A)intvect[]=(30,50,-88);B)intvect[]=(30,50,-88,0,0};

C)intvect[5]=(30,50,-88};D)intvect[5]={30,50,-88,0,0};

(7)若指针p定义为constchar*p=nLuchy!

n;贝U[A]。

A)p所指向的数据不可改变,p在定义时可以不初始化。

B)p所指向的数据不可改变,p在定义时必须初始化。

C)p本身不可改变,p在定义时可以不初始化。

D)p本身不可改变,p在定义时必须初始化。

(8)

intA[20][10],*p;,要使p指向A的首元素,

B)p=A或p=&A[0][0]

D)p=A[0]或p=&A[0][0]

已知数组A和指针p定义为:

正确的赋值表达式是[D]。

A)p=&A或p=A[0][0]

C)p=&A[0]或p=A[0][0]

(9)已知函数func的原形是

doublefunc(doouble*pd,int&ri);

变量x和y的定义是

doublex;inty;

把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是[B]。

A)func(x,&y);B)func(&x,y);C)func(&x,&y);D)func(x,y);

(10)要使字符串变量str具有初值"Lucky",正确的定义语句是(C)。

A)charstr[]={'L','u','c','k','y'};B)charstr[5]={,L','u','c','k,,'y'};

C)charstr[]="Lucky";D)charstr[5]="Lucky";

(11)已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是[A]。

A)intMAT[][10]

C)intMAT[10][3]

B)intMAT[3][]

D)intMAT[][]

(12)若指针p定义为char*="Luchy!

";贝lJ[D]o

A)p所指向的数据不可改变,p在定义时可以不初始化。

B)p所指向的数据不可改变,p在定义时必须初始化。

C)p本身不可改变,p在定义时可以不初始化。

D)p本身不可改变,p在定义时必须初始化。

(13)在下列表达式中,与下标引用A[i][j]不等效的是[A]。

A)*(A+i+j)B)*(A[i]+j)C)*(*(A+i)+j)D)(*(A+i))[j]

(14)要使语句p=newdouble[20];能够正常执行,变量p应定义为[D]。

A)doublep[20];B)doublep;

C)double(*p)[20];D)double*p;

三、1.下列变量名中,(B)是合法的。

B.abc

下列各种运算符丘(A)优先级最高。

D.while

B.&&C.==

3,设变量m,n,a,b,c,d均为0,执行(m=a==b)&&(n=c==d)后,m,n的值是(D)。

C.

A.0,0

1,0

4.字符串”\t\v\\\0which\n”的长度是(B)o

A.4B.10C.9D.字符串有非法字符,输出值不确定

5.设a=2,b=3,c=2;计算a+=b*=(++b-c++)中a、b>c的值(C)。

A.8、6、2B.2、4、2C.10、8、3D.5、3、3

6.已知:

inti=5,下列do-while循环语句的循环次数为(D)。

do{cout«i一<

i—;

}while(i!

=0);

D.无限

A.0B.1

7.下面关于循环语句的描述中,(B)是错误的。

A.循环体内可以包含有循环语句

B.循环体内必须同时出现break语句和continue语句

C.循环体内可以出现选择语句

D.循环体内可以是空语句

8.下面程序段(B)。

if(!

y){cout«wx";continue;}cout«>,#”:

}

while(x>=l&&x<=2):

A.将输出##B.将输出㈱#

C.是死循环D.含有不合法的控制表达式

9.在函数的定义格式中,下面各组成部分中,(D)是可以省略的。

A.函数名B.函数体C.函数数据类型说明D.函数参数

10.在函数的引用调用时,实参和形参应该是使用(C)。

A.变量值和变量B.地址值和指针C变量值和引用D.地址值和引用

11.以下关于文件操作的叙述中,不正确的是(B)o

A.打开文件的目的是使文件对象与磁盘文件建立联系

B.文件读写过程中,程序将直接与磁盘文件进行数据交换

C.关闭文件的目的之一是保证将输出的数据写入硬盘文件

D.关闭文件的目的之一是释放内存中的文件对象

12.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;贝0(B)不是对a数组元素的正确引用(其中0WiClO)。

A.p[i]B.*(*(a+i))C.a[p-a]D.*(&a[i])

13.以下程序的输出结果是(A)。

ftinclude

voidmain()

{chars[]=〃abcdefbcde”,*p=s;

intvl=0,v2=0,v3=0,v4=0;

for(p;*p;p++)

switch(*p)

case'a':

vl++;break;

case'b':

v3++;break;

case'e':

v2++;break;

default:

v4++;

}

cout«vl«,z,,,«v2«/z,,/«v3«,z,z,«v4«endl;

}

A.1,2,2,5B.4,7,5,8C.1,5,3,10D.8,8,8,8

18:

下列一维数组定义正确的是(B)o

A.x=6;intnum[x];B.constintx=6;floata[x];

B.constfloatx=6;intb[x];D.constintx=6;intc[x];答案:

B,

19:

下面选项中等价的是(B)o

A.inta[2][3]={l,0,2,2,4,5)与inta[2][]=(1,0,2,2,4,5}:

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

C.inta[2][3]={3,4,5}与inta[][3]={3,4,5};

D.inta[2][3]={0,1}与inta[2][3]=({0},{1}};答案:

B,

20:

下面程序的输出结果是(A)o

#include

voidmain()

(inta[3][3]={{1,2},{3,4},{5}};

intsum=0;

for(int1=1:

I<3;I++)

for(intj=O;j<=I;j++)

sum+=a[I][j];

cout<

}

A,12B.14C.15D.13

答案:

A

21:

下列数组的定义中,(C)是错误的。

A.charcal[]={'c','m,,,n,};B.charca2="name”;

C.charca3[4]="your";D.intarray[]={1,2,3,4);答案:

C

22:

下面程序的输出结果是(C)o

#include

#include,zstring,h"

voidmain()

{chara[]=,zwelcome",b[]=,zwell,z:

strcpy(a,b);

cout«a«endl;

}

A.weHomeB.wellomC.wellD.wellwe

答案:

C

23:

下面关于数组的说法正确的是(D)。

A.它与普通变量没什么区别B.它的元素的数据类型可以相同,也可以不同

C.它用数组名标识其元素D.数组的元素的数据类型是相同的

24:

下列说法正确的是(C)o

A.字符型数组与整型数组可通用

B.字符型数组与字符串其实没什么区别

C.当字符串放在字符数组中,这时要求字符数组长度比字符串长1个单元,因为要放字符串终结符,\0,

D.字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结果没区别

25:

给出下面定义:

chara[]="abcd";

charb[]={'a,,zbz,'c',zdz);

则下列说法正确的是(A)o

A.数组a与数组b等价B.数组a和数组b的长度相同C.数组a的长度大于数组b的长度D.数组a的长度小于数组b的长度

26:

下面程序的输出结果为(A)o

#include

#include

voidmain()

{charst[20]="hello\0\t\\”;

cout«strlen(st);

cout«sizeof(st)«endl;cout«st;

A.520B.1220C.520D.1120

Hellohello\0\t\\hello\thello\

27:

下面程序的输出结果是(A)o

#include"iostream,h"

voidmain()

{intn[2],I,j,k=2;

for(I=0;I

for(j=0;j

n[j]=n[I]+l;

cout«n[j-2]:

}

A.不确定的值B.3C.2D.1

四、

(1)下面概念中,不属于面向对象方法的是。

A)对象、消息B)继承、多态C)类、封装D)过程调用

答案:

D

知识点:

面向对象的程序设计方法、对象、方法、属性及继承与多态性

评析:

面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。

面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

(2)下列描述中不正确的是o

A)字符型数组中可以存放字符串

B)可以对字符型数组进行整体输入、输出

C)可以对整型数组进行整体输入、输出

D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

答案:

C

知识点:

对数组的理解

评析:

C语言规定只能逐个引用数组元素而不能一次引用整个数组。

字符数组的输入、输出可以将整个字符串一次输入或输出。

所以,选项C的说法是不正确的。

(3)以下程序的输出结果是o

main()

(inti,x[3][3]={9,8,7,6,5,4,3,2,l},*p=&x[l][l];

for(i=0;i<4;i+=2)

Cout«p[i];

A)52B)51053D)97

答案C

知识点:

通过指针引用数组元素

评析:

题中*p=&x[l][l];是指将数组x的数组元素x[l][l]的地址赋值给指针变量P,使P指向X[l][l]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[l][l]的值。

具体执行时如下所示:

i=0时,输出p[0],也就是x[l][l],输出是5;

i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3。

(4)以下程序的运行结果是o

#include"stdio.h"

main()

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

int*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

A)运行后报错B)66C)612D)55

答案:

A

知识点:

通过指针引用数组

评析:

_题目中没有给q分配存储单元,只是简单地给它愚了一个值,所以程序的运行结果是611NULLpointerassignment>也就是运行后报错。

(5)若已定义:

inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表

达式是o

A)p+1B)a+1C)a++D)++p

答案C

知识点:

数组地址的表示

评析:

数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其他元素。

(6)以下程序的输出结果是o

main()

(inta=-l,b=l,k;

if((++a<0)&&!

(b--<=0))

printf("%d%d\n",a,b);

else

printf("%d%d\n",b,a);

}

A)-11B)01

C)10D)00

答案C

知识点:

if条件的判断

评析:

逻辑运算符的优先次序如下:

(非)一&&(与)一11(或),但本题需特别注意的是短路的概念:

对于&&运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为假,系统在执行时,先运算&&左边的表达式,若为假,则系统不会再判断&&运算符右边的表达式了,直接运用短路原理得整个与运算表达式的值为0o由于++a是先运算后使用,b--是先使用后运算。

所以本题在执行++a后,a值为0,不满足条件,所以a为0,根据短路原理,b仍为1,接下去执行else语句,输出10。

(9)请读程序:

#include

func(inta,intb)(

intc;

c=a+b;

returnc;

main()(

intx=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

printf("%d\n",r);

}

上面程序的输出结果是o

A)11B)20C)21D)31

答案C

知识点:

自增、自减运算

评析:

函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x-,y++,x+y)是一"逗号表达式,它的值应该等于x+y,所以整个表达式(x--,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21o

(10)请读程序:

#include

main()

inta,b;

for(a=1,b=1;a<=100;a++)(

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5;

}

printf("%d\n",a);

上面程序的输出结果是o

A)7B)809D)10

答案B

知识点:

break语句和continue语句

评析:

break语句的作用是用于跳出循环体,继续执行循环体下面的语句;而continue语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

“%”是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8o

(13)请选出以下程序的输出结果o

#include

sub(int*s,inty)

(staticintt=3;

y=s[t];t--;

}

main()

(inta[]=(l,2,3,4},i,x=0;

for(i=0;i<4;i++){

sub(a,x);printf("%d",x);}

printf("\n");

}

A)1234B)432100000D)4444

答案C

知识点:

函数的形参和实参的关系

评析:

x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为Oo

(14)若有以下说明和语句,请选出哪个是对c数组元素的正确引用。

intc[4][5],(*cp)[5];

cp=c;

A)cp+lB)*(cp+3)C)*(cp+l)+3D)*(*cp+2)

答案D

知识点:

数组元素的引用

评析:

cp=c这个语句是将数组第0行的地址赋给了cpocp+1使指针指向二维数组c的第一行;*(cp+3)是数组c的第三行的第0列的地址值;*(cp+l)+3是数组c的第一

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

当前位置:首页 > 医药卫生 > 预防医学

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

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