《计算机程序设计(C++)单元测试题2及答案.docx》由会员分享,可在线阅读,更多相关《计算机程序设计(C++)单元测试题2及答案.docx(15页珍藏版)》请在课桌文档上搜索。
1、一、单选题1、假定函数定义为:voidfx(intn,doublex).那么,正确的调用语句是()。A.voidf(n,);B.fx(zn);/,n是已定义的int,double变量C.f(inty,doublem);D.k=f(10,19.8);正确答案:B2、在一个C+程序中,main函数()。A.和普通函数一样,可以在代码主体的任何位置出现。B.必须出现在所有普通函数之前C.必须出现在所有普通函数之后D.必须出现在固定位置正确答案:A3、定义函数的目的是()。A.提高程序的可读性B.减少程序文件占用的内存空间C.提高程序的执行效率D.减少程序的篇幅正确答案:A解析:其余三个选项都不成为创
2、建函数的目的4、以下哪个函数声明是正确的?(A.voidplay(a:lnteger,b:lnteger);B.voidplay(inta,intb);C.voidplay(inta,b);D.Subplay(aasinteger,basinteger);正确答案:B5、函数的返回值类型是()决定的。A.由定义函数时所指定的返回值类型B.由return语句中的表达式类型C.在调用函数时临时D.由调用该函数的主调函数类型正确答案:A6、假定函数定义为:voidfun(charch,float)那么,正确的调用语句是()oA.fun(65,2.8);B.t=fun(,D,16.5);C.fun(3
3、2z32);D.fun(abc,3.0);解析:A、第一个实参与相应形参类型不匹配。B、该函数无返回值D、第一个实参与相应形参类型不匹配。7、引入内联函数的目的是为了OA.方便变量的使用B.提高函数调用的效率C.扩大局部变量的使用范围D.节省内存空间正确答案:B解析:提高函数调用效率是使用内联函数的主要目的8、下列说法中不正确的是:A.函数必须有返回值B.return语句后的括号可要可不要C.函数值是由return语句返回给主调函数的D.如果函数有返回值,那么它的类型是确定的正确答案:A9、在一个程序中,如果函数fA调用了函数fB,函数fB又调用了函数fA,那么A.这样调用方式是不允许的B.称
4、为函数的间接递归调用C.称为函数的直接递归调用D.称为函数的循环调用10、由inline修饰的是。A.外联函数B.内联函数C.宏定义D.调用函数定义正确答案:B11、当给函数的参数设置默认值时,正确的说法是oA.若给某一参数设置了默认值,那么在参数表中其后所有的参数都必须也设置默认值B.任何情况下,函数调用时均可不列出已设置默认值的参数C.若给某一参数设置了默认值,那么在参数表中其前所有的参数都必须也设置默认值D.给函数的参数设置默认值可以提高程序运行效率正确答案:A解析:B、在调用时,若给已经设置默认值的参数传递实际值,则在参数表中被取代参数的左边所定义的所有参数,无论是否有默认值,都必须传
5、递实际参数。12、关于C+函数的叙述中,正确的是A.函数在被调用之前必须先声明或定义B.函数不能自己调用自己C.每个函数都必须返回一个值D.每个函数至少要有一个参数正确答案:A解析:C+的语法规定:函数可以没有参数,可以没有返回值,函数可以递归调用,自己调用自己13、地址是指oA.变量的类型B.变量的值C.变量所在的内存单元编号D.变量本身正确答案:C14、引用oA.指向一块内存区域B.需要分配内存区域C.是某内存区域的别名D.可以为空正确答案:C解析:引用是某内存区域的别名,不能为空,不需要分配内存区域。15指针oA.不能为空B.是一块内存区域的别名C.的内容为指向内存的地址D.的内容不可变
6、解析:C、指针指向一块内存,其内容为指向内存的地址,可以变化,也可以为空。16、指针做形参的函数不能做到的是A.将被调用函数内部的变量地址传递到调用函数。B.在被调用函数内部修改调用函数中变量的值。C.将调用函数中变量的值通过参数传递到被调用函数。D.将被调用函数内部变量的值通过参数传递到调用函数。正确答案:A解析:A、函数内部的变量一旦函数执行结束就会被销毁,将其地址传递到调用函数是没有意义且危险的。17、如果定义inta,*p=&a;则下列哪项的表达式为逻辑假值。A.p=&*pB.a=*&aC.*p=&aD.p=&a正确答案:C解析:C、p、a、*p、&a分别表示:指针变量p、整型变量a、
7、指针P所指向的变量a、变量a的地址,故只有A中表达式为逻辑假值。18、若有以下定义,则赋值正确的是ointa,b,*p;floatc,*q;A.q=&a;B.p=NLL;C.q=p;D.p=&c;正确答案:B解析:其他选项赋值号两边变量的数据类型不匹配。19、两个指针oA.可在一定条件下进行相等或不等的比较运算B.可在一定条件下相加C.如果同时指向一个变量,则此后就不能再指向其他变量了D.任何时候都不能相减正确答案:A解析:A、如果两个指针都指向同一个数组中的元素,则可以相减,其值为两个指针之间的元素个数,但它们不能相加。某个时刻两个指针同时指向了一个变量,不影响其后改变其值而指向其他变量。2
8、0、如果定义intx10=l,2,3,*m=x;则结果不能表示地址的表达式是OA.*mB.&xOC.xD.m21、设p和q是指向同一个int类型数组不同元素的指针变量且qp,k也为int类型的变量,则可以执行的语句是oA.p+qB.k=*(p+q)C.k=*(q-p)D.k=*p*(*q)正确答案:D22、如果定义inta10,*p=a;则不与a5等价的是。A.*(p+5)B.p5C.*(a+5)D.p+5正确答案:D23、如果定义intaa10=l,2,3,4,5,6,7,8,9,10,*p=aa;则下列选项中数值为6的表达式是oA.*(p+6)B.p+5C.*p+6D.*p+=5正确答案:
9、D24、使用new向系统动态申请内存时,正确的是A有可能获得空指针B.总是能获得一个指向所需内存空间首地址的指针C,分配的内存空间只能使用一个特定的指针访问D.分配的内存空间不用时系统会自动收回正确答案:A二、判断题1、程序中的其他函数可以调用主函数。正确答案:X解析:主函数可以调用其他函数,但不能被其他函数调用。2、一个程序有且只有一个主函数。正确答案:3、函数声明就是函数定义。正确答案:X解析:函数定义中包括该函数完整的源代码。函数声明中仅有函数原型(头语句或简化的头语句),当调用语句所处位置之前没有函数定义时使用。4、C+程序总是从最先定义的函数开始执行。正确答案:X解析:C+程序总是从
10、main()函数开始执行的。5、参数个数类型都相同,但返回值类型不同的两个函数可以同名重载。6、当变量超出它的作用域时就一定会被销毁。正确答案:X解析:静态变量不会。7、实参的数据类型必须与形参的相同。正确答案:X解析:实参与相应形参的数据类型相容即可。例如,当形参定义为double型时,实参可以定义为int型。8、当需要从函数中返回多个值时可以使用全局变量。正确答案:解析:这是全局变量的用途之一,尽管不是十分推荐这样做。9、如果一个指针加1,实际上是加上了指针所指向的数据类型大小。正确答案:10、可以交换两个数的函数定义为:voidswap(int*p,int*q)int*temp;*tem
11、p=*p;*p=*q;*q=*temp;)正确答案:X解析:swap传递的了一个地址,函数中的形参p、q是指向实参数a、b的两个指针。但这里的语句int*temp;*temp=*p;是错误的,原因是:int*temp新建了一个指针但未分配内存。*temp=*p并非指向而是拷贝,即将*p所指向的内存的值(a的值)拷贝至HtemP所指内存。但int*temp是不分配内存的,于是系统在拷贝时临时给一个随机地址存值。所分配的随机地址是无法预期的,且在函数运行结束后也不回收,造成内存泄漏。11、指针可以通过赋给不同的常数值来指向内存空间的任意位置。正确答案:X12、指针不仅可以指向变量,还可以指向函数,通过合适类型的函数指针可以调用类型匹配的函数。正确答案:13、语句int*cc=newint*10;动态申请了有10个元素的数组,数组中每个元素都是一个int*指针。正确答案:14、应用中,C+中的字符指针在大多数情况下都指的是一个字符串(字符串数组首地址)。正确答案:15、结构体指针变量所占的内存空间比整型指针变量的要大。正确答案:X解析:在同一个计算机系统上所有的指针大小都是一致的。16、动态数组的优点在于存取性能比静态数组要高。正确答案:X解析:动态数组的优点是可以在空间不够时自动增大空间,但由于可能存在需要自动增大的步骤,存取性能要比事先就准备好足够大空间的静态数组要低。