面向对象C程序设计综合练习题

上传人:仙*** 文档编号:99115953 上传时间:2022-05-31 格式:DOC 页数:29 大小:105KB
收藏 版权申诉 举报 下载
面向对象C程序设计综合练习题_第1页
第1页 / 共29页
面向对象C程序设计综合练习题_第2页
第2页 / 共29页
面向对象C程序设计综合练习题_第3页
第3页 / 共29页
资源描述:

《面向对象C程序设计综合练习题》由会员分享,可在线阅读,更多相关《面向对象C程序设计综合练习题(29页珍藏版)》请在装配图网上搜索。

1、word面向对象C+程序设计综合练习题一、单项选择题1C+源程序文件的缺省扩展名为(A)。 A. cpp B. exe C. obj D. lik2能作为C+程序的根本单位是( C )。 A. 字符 B. 语句 C. 函数 D. 源程序文件3由C+源程序文件编译而成的目标文件的缺省扩展名为( C )。 A. cpp B. exe C. obj D. lik4程序中主函数的名字为 A 。 A. main B. MAIN C. Main D. 任意标识符5程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D.

2、 空格或回车6x0 & x=10的相反表达式为 A 。 A. x10 B. x10 C. x=0 | x0 & x107设int a=12;,如此执行完语句a+=a*a;后,a的值是( C )。 A. 12 B. 144 C. 156 D. 2888由C+目标文件连接而成的可执行文件的缺省扩展名为( B )。 A. cpp B. exe C. obj D. lik9假定如下x和y均为int型变量,如此不正确的赋值为 B 。 A. x+=y+ B. x+=y+ C. x=+y D. +x=+y10在下面循环语句中循环体执行的次数为 C 。 int i=0,s=0; while(s0 | y=5的

3、相反表达式为 B 。A. x=0 | y!=5 B. x0 | y!=5 D. x0 & y=513do语句能够改写为D 语句。 A. 复合 B. if C. switch D. while14假定一个二维数组的定义语句为“int a34=3,4,2,8,6;,如此元素a21的值为 A 。 A. 0 B. 4 C. 8 D. 615在下面的一维数组定义中,哪一个有语法错误。 C A. int a=1,2,3; B. int a10=0; C. int a; D. int a5;16可用作C+语言用户标识符的一组标识符是( B )。 A. void define +WORDB. a3_b3 _1

4、23 YNC. for -abc CaseD. 2a DO sizeof17以下关于函数模板表示正确的答案是 C 。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型18以下函数的返回结果是 A 。 int function(char *x) char *p=x; while(*p+); return(p-x-1); 19如下 B 的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参

5、是地址值20函数调用不可以 D 。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参21采用重载函数的目的是 D 。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性22以下正确的描述是 B 。 A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套23存储以下数据,占用存储字节最多的是 D 。 A. 0 B. 0 C. “024C+语言的编译系统对宏命令的处理是( D )。 A. 在程序运行时进

6、展 B. 在程序连接时进展 C. 和C+程序的其它语句同时进展编译 D. 在对源程序中其它成分正式编译之前进展25关于局部变量,下面说法正确的答案是( C )。 A. 定义该变量的程序文件中的函数都可以访问 B. 定义该变量的函数中的定义处以下的任何语句都可以访问 C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问 D. 定义该变量的函数中的定义处以上的任何语句都可以访问26当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( B )。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目

7、录 D. 搜索当前逻辑盘上的所有目录27假如定义了函数 double *function(), 如此函数function的返回值为 B 。28如下给字符数组赋初值时,正确的答案是( A )。 A. char s1=abcdef; B. char s24=abcd;C. char s323=“abc,xyz; D. char s44=a,x,s,t;29关于void 指针,如下说法正确的答案是 C 。 A. void 指针就是未指向任何数据的指针 B. void 指针就是已定义而未初始化的指针 C. 指向任何类型数据的指针可直接赋值给一个void 指针 D. void 指针值可直接赋给一个非vo

8、id 指针30设有定义“static int data56;,设该数组在静态存储区中的起始地址为十进制的100, 假如每个int型数占4个字节,如此数组元素data23的地址为( D )。31设x是一个bool型的逻辑量,y的值为10,如此表达式 x & y的值为 C 。 A. 1 B. 0 C. 与x值一样 D. 与x值相反32假定p指向的字符串为string,假如要输出这个字符串的地址值,如此使用 C 。 A. cout*s; B. couts; C. cout&s; D. coutGetValue() D. x.GetValue()45在多文件结构的程序中,通常把类中所有非内联函数的定义

9、单独存放于 B 中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件46假定AA为一个类,int a()为该类的一个成员函数,假如该成员函数在类定义体外定义,如此函数头为 A 。 A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a()47循环语句“for(int i=0; in; i+) couti*inext和elemHead D. elemTail-next和elemTail53对于一个类的析构函数,其函数名与类名(C )。 A. 完全一样 B. 完全不同 C. 只相差一个字符 D. 无关系54假定一条定义语句为“int a10,

10、x, *pa=a;,假如要把数组a中下标为3的元素值赋给x,如此不正确的语句为D 。A. x=pa3; B. x=*(a+3) C. x=a3; D. x=*pa+3;55循环体至少被执行一次的语句为C 。 A. for循环 B. while循环 C. do循环 D. 任一种循环56假定AB为一个类,如此执行 “AB x;语句时将自动调用该类的( B )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数57当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储( A )个整数。 A. n B. n+1 C. n-1 D.

11、158假定AB为一个类,如此执行 “AB x(a,5);语句时将自动调用该类的( A )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数59在下面的字符数组定义中,哪一个有语法错误。 D 。 A. char a20=abcdefg; B. char a=x+y=55.; C. char a15; D. char a10=5;60假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为( D )。 A. AB() a=0; B. AB(int aa=0): a(aa) C. AB(int aa): a(aa) D. AB

12、() 61设px是指向一个类对象的指针变量,如此执行 “delete px;语句时,将自动调用该类的( C )。 A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数62假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( C )。 A. AB() B. AB(): a(0) C. AB(int aa=0) a=aa; D. AB(int aa) 63假定有“struct BOOKchar title40; float price;book;,如此正确的语句为 B 。 A. BOOK &x= &book; B. BOOK &x=book; C. B

13、OOK &x=new BOOK; D. BOOK &x=BOOK;64假定AB为一个类,如此执行 “AB a, b(3), *p;语句时共调用该类构造函数的次数为( A )。 A. 2 B. 3 C. 4 D. 565对类对象成员的初始化是通过构造函数中给出的( B )实现的。 A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体66假定AB为一个类,如此执行 “AB a(2), b3, *p4;语句时共调用该类构造函数的次数为( B )。 A. 3 B. 4 C. 5 D. 967假定一个二维数组的定义语句为“int a34=3,4,2,8,6;,如此元素a12的值为 C 。

14、A. 2 B. 4 C. 6 D. 868一个类的静态数据成员所表示属性 ( C )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 69当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的 D 。 A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员70类的静态成员的访问控制 D 。 A. 只允许被定义为private B. 只允许被定义为private或protected C. 只允许被定义为public D. 可允许被定义为private、protected或

15、public71软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进展相应的软件更新的难易程度叫做软件的 A 。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性72在成员函数中进展双目运算符重载时,其参数表中应带有 B 个参数。 A. 0 B. 1 C. 2 D. 373如果表达式+a中的“+是作为成员函数重载的运算符,假如采用运算符函数调用格式,如此可表示为 D 。 A. a.operator+(1) B. operator+(a) C. operator+(a,1) D. a.operator+()74双目运算符重载为普通函数时,其参数表中应带有 C 个参

16、数。 A. 0 B. 1 C. 2 D. 375以下表示中不正确的答案是 C 。 A. 在一个函数中,可以有多条return语句 B. 函数的定义不能嵌套,但函数的调用可以嵌套 C. 函数必须有返回值 D. 不同的函数中可以使用一样名字的变量76对于公有继承,基类中的私有成员在派生类中将 ( C )。 A. 能够直接使用成员名访问 B. 能够通过成员运算符访问 C. 仍然是基类的私有成员 D. 变为派生类的私有成员77从一个基类派生出的各个类的对象之间( C )。 A. 共享所有数据成员,每个对象还包含基类的所有属性 B. 共享局部数据成员,每个对象还包含基类的所有属性 C. 不共享任何数据成

17、员,但每个对象还包含基类的所有属性 D. 共享局部数据成员和函数成员78当保护继承时,基类的 B 在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。79在关键字private后面定义的成员为类的A 成员。 A. 私有 B. 公用 C. 保护 D. 任何80函数原型语句正确的答案是 B 。 A. int Function(void a); B.void Function (int); C. int Function(a); D.void int(double a);81在多文件结构的程序中,通常把含有main()函数的文件称为 A 。 A. 主文件 B. 实现文件 C.

18、 程序文件 D. 头文件82设有如下函数定义 int f(char *s) char *p=s; while(*p!=0) p+; return(p-s); 在主函数中用coutf(“good)调用上述函数, 如此输出结果为 B 。 A. 3 B. 4 C. 5 D. 683当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( C )。 A. n B. n+1 C. n-1 D. n-284假如用数组名作为函数调用的实参,传递给形参的是A 。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数85类的构造函数是在定义该类的

19、一个( C )时被自动调用执行的。 A. 成员函数 B. 数据成员 C. 对象 D. 友元函数86预处理命令在程序中都是以( B )符号开头的。 A. * B. # C. & D. 87假定一个类的构造函数为 “A(int aa, int bb) a=aa; b=aa*bb;,如此执行 “A x(4,5);语句后,x.a和x.b的值分别为( C )。 A. 4和5 B. 5和4 C. 4和20 D. 20和588假定有定义“int b10; int *pb;,如此不正确的赋值语句为 D。 A. pb=b; B. pb=&b0; C. *pb=new int; D. pb=b5;89当一个类对象

20、离开它的作用域时,系统自动调用该类的( D )。 A. 无参构造函数 B. 带参构造函数 C. 拷贝构造函数 D. 析构函数90假定变量b和pb定义为“int b10, *pb=b;,要将24赋值给b1元素中,不正确的语句是 C 。 A. *(pb+1)=24; B. *(b+1)=24; C. *+b=24; D. *+pb=24;91对类中常量成员的初始化是通过构造函数中给出的( C )实现的。 A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体92假定AA为一个类,a为该类公有的数据成员,假如要在该类的一个成员函数中访问它,如此书写格式为A 。A. a B. AA:a C

21、. a() D. AA:a()93引入友元的主要目的是为了 C 。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性94类中定义的成员默认为 B 访问属性。 A. public B. private C. protected D. friend95关于运算符重载,如下说法正确的答案是 C 。 A. 重载时,运算符的优先级可以改变。 B. 重载时,运算符的结合性可以改变。 C. 重载时,运算符的功能可以改变。 D. 重载时,运算符的操作数个数可以改变。96如果是类B在类A的根底上构造,那么,就称 B 。 A. 类A为基类或父类,类B为超类或子类 B

22、. 类A为基类、父类或超类,类B为派生类或子类 C. 类A为派生类,类B为基类 D. 类A为派生类或子类,类B为基类、父类或超类97一个类的构造函数通常被定义为该类的( A )成员。 A. 公用 B. 保护 C. 私有 D. 友元98假定一个类对象数组为An,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C )。 A. 0 B. 1 C. n D. n-1二、填空题1C+语言是在_C_语言的根底上开展起来的。2假定x=10,如此表达式xa_。30假定x是一个逻辑量,如此x & false的值为_0_。31假如需要把一个字符串aaa赋值到字符数组a中,如此需要执行_strcpy_函

23、数的调用来实现。32假定p所指对象的值为25,p+1所指对象的值为42,如此执行(*p)+运算后,p所指对象的值为_26_。33存储字符a和字符串a分别需要占用_1_和_2_个字节。34假如“double x=100;extern doule x;_。_int_和_double_。36全局变量和静态局部变量具有静态生存期,存放在内存的_全局数据_区中。37假定一个二维数组为c58,如此c3的值为二维元素_c30_的地址,c3+2的值为二维元素_c32_的地址。38假定对数组a进展初始化的数据为2,7,9,6,5,7,10,如此a2和a5分别被初始化为_9_和_7_。39函数形参的作用域是该函数

24、的_函数体_。40假如a是一个字符数组,如此向屏幕输出a中所存字符串的表达式为_couta_。41对于无返回值函数,定义函数时要用_void_修饰函数类型。42假定p是一个指向整数对象的指针,如此用_*p_表示该整数对象,用_&p_表示指针变量p的地址。43一个数组的数组名实际上是指向该数组_第一个_元素的指针,并且在任何时候都不允许_修改_它。44一个指针类型的对象占用内存的_4_个字节的存储空间。45假定对二维数组a34进展初始化的数据为3,5,6,2,8,7,如此a11和a23分别被初始化为_8_和_0_。46局部变量具有局部生存期,存放在内存的_栈_区中。47假定x是一个逻辑量,如此!

25、x | false的值为_!x_。48假如y是x的引用,如此&y和&x的值_相等_,即为变量_x_的地址。49假定p为指向二维数组int d46的指针,如此p的类型为_int(*)6_。50假定p所指对象的值为25,p+1所指对象的值为42,如此执行*(p+)或*p+运算后,p所指对象的值为_42_。51假定p是一个指针,如此*p+运算首先访问_*p_,然后使_p_的值增1。52特殊类的对象拥有其一般类的全部属性与操作,称特殊类_继承_了一般类。53假定用户没有给一个名为AB的类定义构造函数,如此系统为其定义的构造函数为_AB()_。54在函数模板的参数中,用class修饰的参数称为_类型_参

26、数。55执行_deletep_操作将释放由p所指向的动态分配的数组空间。56假定指向一维数组b10中元素b4的指针为p,如此p+3所指向的元素为_b7_,p-2所指向的元素为_b2_。57假定x=5,y=6,如此执行表达式y+=x-计算后,x和y的值分别为_4_和_11_。58用于从键盘上为变量输入值的标准输入流对象是_cin_。59假如二维数组a有m列,设a00位于数组的第一个位置上,如此计算任一元素aij在数组中位置序号的公式为_i*m+j+1_。60有定义“int x, a=5,7,9, *pa=a;,在执行“x=+*pa;语句后,x的值是_6_。61执行int p=new int操作得

27、到的一个动态分配的整型对象为_*p_。62对于类中定义的任何成员,其隐含访问权限为_private_。63为了防止在调用成员函数时修改对象中的任何数据成员,如此应在定义该成员函数时,在函数头的后面加上_const_关键字。64如果一个派生类的基类不止一个,如此这种继承称为_多重继承_。65假定用户没有给一个名为AB的类定义析构函数,如此系统为其定义的析构函数为_AB()_。66假如一个函数的定义处于调用它的函数之前,如此在程序开始可以省去该函数的_原型_语句。67变量a定义为“int a=5;,要使ra成为a的引用,如此ra应定义为_ int &ra=a_。68对于结构中定义的任何成员,其隐含

28、访问权限为_public_。69语句“couts;的输出是“apple,如此执行语句“coutname等价的表达式是_(*p).name_。三、程序填充1斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。 #include void main() int f,f1,f2,i; cout 斐波那契数列:n; f1=0; f2=1; coutsetw(6)f1setw(6)f2; for(i=3;i=20;i+) f=_(1)_; coutsetw(6)f; if(_(2)_) coutendl; f1=f2;

29、f2=_(3)_; coutendl; 【答案】(1) f1+f2 (2) i%5=0 (3) f2在输出屏幕上打印出一个由字符*组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。 #include void main() int i,j; for(i=1;_(1)_;i+) for(j=1;j=9;j+) if(j=5-i | _(2)_) cout; else _(3)_; coutendl; 【答案】(1) i=5+i (3) cout*3打印出2至99之间的所有素数(即不能被任何数整除的数)。 #include #include void main()

30、 int i,n; for(n=2; _(1)_; n+) int temp=int(sqrt(n); /求出n的平方根并取整 for(i=2; _(2)_; i+) if(n%i=0) _(3)_; if(itemp) coutn ; coutn; 【答案】 (1) n=99 (2) i=temp (3) break4统计字符串中英文字母个数的程序。 #include int count (char str); void main() char s180; cout s1; cout count=count(s1)=a & stri=A& stri=Z (2) num+ (3) return

31、 num 5采用辗转相除法求出两个整数的最大公约数。 #include void main() int a,b; coutab; while(a=0 | _(1)_) coutab; while(b) int r; r=a%b; _(2)_; _(3)_; /分别修改a和b的值 coutaendl; /输出最大公约数 【答案】 (1) b=0 (2) a=b (3) b=r6从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进展的。 #include void main() int x; coutx; int

32、 a20,k=0,r; do r=x%2; ak+=r; x=_(1)_; while(_(2)_); for(-k;k=0;k-) _(3)_; coutendl; 【答案】(1) x/2 (2) x!=0 (3) coutak7假定有定义为“struct NODEint data; NODE* next;,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序一样。 void f5(NODE*& L, int table, int n) if(nnext=_(2)_; p-data=_(3)_; i+; p-next=NULL; /把最后一个

33、结点的指针域置空 p=L; L=L-next; /使L指向链表的第一个带值的结点 delete p;【答案】(1) in (2) new NODE (3) tablei8对数组an按升序进展的选择排序算法 void SelectSort(int a, _(1)_) int i,j,k; for(i=1;in;i+) /进展n-1次选择和交换 k=i-1; for(j=i;jn;j+) if(ajak) _(2)_; int x=ai-1; ai-1=ak; _(3)_; 【答案】(1) int n(2) k=j (3) ak=x9假定有定义为“struct NODEint data; NODE* next;,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。 void f6(NODE*& L, int table, int n)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!