1C++语言程序设计自测练习(二)一、单项选择题1.函数调用不可以()。A.出现在一个表达式中B.出现在执行语句中C.作为一个函数的实参D.作为一个函数的形参2.以下正确的描述是()。A.函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套3.若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数4.以下错误的描述是()。A.被调用函数中可以不用return语句B.被调用函数中可以用多个return语句C.被调用函数中,如果有返回值,就一定要有return语句D.被调用函数中,一个return语句可返回多个值给调用函数5.以下正确的描述是()。A.不允许设置参数的默认值B.设置参数的默认值只能在定义函数时设置C.设置参数的默认值时,应该设置右边的参数D.设置参数的默认值时,应该全部参数都设置6.采用重载函数的目的是()。A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性7.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcap()C.strcat()D.strcmp()8.以下叙述中正确的是()。A.使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值B.使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C.在程序中使用内联函数使程序的可读性变差D.在定义函数时可以在形参表的任何位置给出缺省形参值9.下面的标识符中,()是文件级作用域。A.函数形参B.语句标号C.外部静态类标识符D.自动类标识符10.以下叙述不正确的是()。A.宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表示11.C++语言的编译系统对宏命令的处理是()。2A.在程序运行时进行B.在程序连接时进行C.和C++程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行12.当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是()。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录13.当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是()。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录14.在下面存储类中,()对象的可见性与生存期不一致。A.外部类B.自动类C.内部静态类D.寄存器类15.在下面存储类中,()的对象不是局部变量。A.外部静态类B.自动类C.函数形参D.寄存器类16.关于局部变量,下面说法正确的是()。A.定义该变量的程序文件中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问17.文件包含命令中被包含的文件的扩展名()。A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp18.预处理命令在程序中都是以()符号开头的。A.*B.#C.&D.@19.设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为()。A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数20.用new运算符创建一个含10个元素的一维整型数组的正确语句是()。A.int*p=newa[10];B.int*p=newfloat[10];C.int*p=newint[10];D.int*p=newint[10]={1,2,3,4,5}21.下列给字符数组赋初值时,正确的是()。A.chars1[]=”abcdef”;B.chars2[4]=”abcd”;C.chars3[2][3]={“abc”,”xyz”};D.chars4[4][]={‘a’,’x’,’s’,’t’};22.设有定义“staticintdata[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为()。A.115B.124C.130D.16023.假定变量m定义为“intm=7;”,则定义变量p的正确语句为()。3A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;24.假定k是一个double类型的变量,则关于变量p的正确定义语句为()。A.doublep=&k;B.int*p=&k;C.double&p=*k;D.char*p=”Thankyou!”;25.变量s的定义为“char*s=”Helloworld!”;”,要使变量p指向s所指向的同一个字符串,则应选取()。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;26.关于void指针,下列说法正确的是()。A.void指针就是未指向任何数据的指针B.void指针就是已定义而未初始化的指针C.指向任何类型数据的指针可直接赋值给一个void指针D.void指针值可直接赋给一个非void指针27.假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为()。A.x=pa[3];B.x=*(a+3);C.x=a[3];D.x=*pa+3;28.假定有定义“intb[10];int*pb;”,则不正确的赋值语句为()。A.pb=b;B.pb=&b[0];C.*pb=newint;D.pb=b[5];29.假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加()。A.1B.4C.sizeof(double)D.sizeof(p)30.假定p指向的字符串为”string”,则coutp+3的输出结果为()。A.stringB.ringC.ingD.i31.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用()。A.cout*p;B.coutp;C.cout&p;D.cout(void*)p;32.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。A.int*p=newint[30];B.int*p=newint(30);C.int*p=new[30];D.*p=newint[30];33.假定p是具有int**类型的指针变量,则给p赋值的正确语句为()。A.p=newint;B.p=newint*;C.p=newint**;D.p=newint[10];34.要使语句“p=newint[10][20];”能够正常执行,p应被事先定义为()。A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];35.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;”,则正确的语句为()。A.strcpy(book-title,”WangTao”);B.strcpy(book.title,”WangTao”);C.strcpy(*book.title,”WangTao”);D.strcpy((*book)-title,”WangTao”);36.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则不正确的语句为()。A.BOOK*x=newbook;B.BOOKx={C++Programming,27.0};C.BOOK*x=newBOOK;D.BOOK*x=book;37.假定有“structBOOK{chartitle[40];floatprice;}book;”,则正确的语句为()。A.BOOK&x=&book;B.BOOK&x=book;C.BOOK&x=newBOOK;D.BOOK&x=BOOK;38.下列对引用的陈述中不正确的是()。4A.每一个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作实际上作用于它所引用的对象C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D.不需要单独为引用分配存储空间39.假定变量a和pa定义为“doublea[10],*pa=a;”,要将12.35赋值给a中的下标为5的元素,不正确的语句是()。A.pa[5]=12.35;B.a[5]=12.35;C.*(pa+5)=12.35;D.*(a[0]+5)=12.35;40.假定变量b和pb定义为“intb[10],*pb=b;”,要将24赋值给b[1]元素中,不正确的语句是()。A.*(pb+1)=24;B.*(b+1)=24;C.*++b=24;D.*++pb=24;41.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句()。A.deletep;B.delete*p;C.delete&p;D.delete[]p;42.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态内存,应使用语句()。A.deletep;B.delete*p;C.delete&p;D.delete[]p;43.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为()。A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;44.关于消息,下列说法中不正确的是()。A.发送消息的对象请求服务,接受消息的对象提供服务B.消息的发送者必须了解消息的接收者如何相应消息C.在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用D.每个对象只能接收某些特定格式的消息45.关于封装,下列说法中不正确的是()。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的46.面向对象方法的多态性是指()。A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的47.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性48.软件产品可被全部或部分地再用于新的应用的能力叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性49.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性50.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。5A.可维护性B.可复用性C.兼容性D.正确性二、填空题1.含随机函数的表达式rand()%20的值在_____至______区间内。2.在switch语句中,每个语句标号所含关键字case后面的表达式必须是整型_______。3.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。4.作为语句标号使用的C++保留字case和default只能用于________语句的定义体中。5.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时________执行。6.若while循环的“头”为“while(i++=10)”,并且i