《C++期中考试试卷(共15页).docx》由会员分享,可在线阅读,更多相关《C++期中考试试卷(共15页).docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上C+语言程序设计 期中考试试题考试时间:2012年4月17日姓名: 学号: 班级:一、选择题(每小题1分,共40分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 1. 关于友元,下列说法错误的是( )A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元函数可以减少系统开销,提高效率。D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元A2. 下面选项中不属于面向对象程序设计特征的是( )。A)继承性B)多态性C)类比性D)封装性C3. 已知下列语句中的x
2、和y都是int型变量,其中错误的语句( )A ) x=y+; B ) x=+y; C ) x+=y; D ) +x=y;C4. 为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。 A)内联函数 B)重载函数 C)递归函数 D)函数模板A5. 下列关于C+函数的叙述中,正确的是( )。A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数在被调用之前必须先声明 D)函数不能自己调用自己C6. 有以下程序#includeint i = 0;void fun() static int i = 1; std:couti+,;std:couti,;int main() fun(
3、); fun(); return 0;程序执行后的输出结果是( )A) 1,2,1,2, B) 1,2,2,3, C) 2,0,3,0, D) 1,0,2,0,D7. 下列字符串中,可以用作C+标识符的是A)y_2012 B)int C)3d D)foo-1A8. cout 2-5 endl;的输出结果为( )A)7B)-5C)0.03125D)-7D9. 下列关于类和对象的叙述中,错误的是( )。A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系A10设int a=3,b=2;,则+a*b+的结果是( )。A)6 B)8
4、 C)9 D)12B11在32位计算机中,一个int型数据所占用的内存长度为( )字节。A)2B)4C)6D)8B12下列十六进制整型常量的写法中,错误的是( )。A)0xafB)0C)0X1bD)0xAEB13. 下列变量定义中,正确的是( )A)int m,n,x,y; float x,z;B)char c1,c2=”c”; C)double age,do;D)float f1,_time=0; double score_;D14. 若有下面的函数调用:fun(a+b+c+d,3,min(a,b),n)则fun函数的实参个数是( )。A3B4C5D6B15. 有如下函数定义:void fu
5、nc(int a, int& b) a+;b+;若执行代码段: int x=2,y=2;func(y,x);则变量x和y的值分别是( )。A2和2B3和3C3和2D2和3C16. 在语句cout n;switch(n) case 1: cout 1; case 2: cout 2; case 3: case 4: cout 3; break;default: cout 4;时,若键盘输入1,则屏幕显示A)1 B)14 C)12 D)123D19. 有如下程序:int x = 4;dox-=3;cout x;while(!(-x);执行这个程序的输出结果是( )。 A1B41C1-2D死循环C2
6、0. 已知枚举类型定义语句为: enum Token NUMBER ,NAME, PLUS = 5, MINUS, PRINT = 10 ;则下列叙述中错误的是( )A)枚举常量NAME的值为1B)枚举常量NUMBER的值为1C)枚举常量MINUS的值为6D)枚举常量PRINT的值为10B21. 执行语句序列:int i=0; while(i 25) i+=3; couti; ,输出结果是( )。A)24 B)25 C)27 D)28C22. 有如下程序:#includeusing namespace std;void fun (int x)cout x endl;int main()cout
7、 fun (23);return 0;如上程序的输出为( )A)23B)2323C)编译错误D)运行错误C23. 有如下程序:#include using namespace std;void swap(int& x, int y) int t = x; x = y; y = t;int main( )int a=23,b=42;swap(b, a);cout a , b endl;return 0;执行后的输出结果是( )。A)42, 42 B)23, 23 C)23, 42 D)42, 23B24. 已知程序中已经定义了函数test,其原型是int test(int, int, int);
8、,则下列重载形式中正确的是A ) char test(int,int,int);B ) double test(int,int,double);C ) int test(int,int,int=0);D ) float test(int,int,float=3.5F);B25. 有如下程序段:int i=1;while (1) i+; if(i = 10) break; if(i%2 = 0) cout *;执行这个程序段输出字符*的个数是A)10B)3C)4D)5C26. 计算斐波那契数列第n项的函数定义如下:int fib(int n) if (n = 0) return 1; else
9、if (n = 1) return 2; else return fib(n-1)+fib(n-2);若执行函数调用表达式fib(2),函数fib被调用的次数是A)1B)2C)3D)4C27. 有如下程序:#includeusing namespace std;int main()void function(double val);double val;function(val);coutval;return 0;void function(double val)val = 3;编译运行这个程序将出现的情况是A)编译出错,无法运行 B)输出:3C)输出:3.0 D)输出一个不确定的数D28.
10、有如下类声明:class Foo int bar(); ;则Foo类的成员bar是( )。A)公有数据成员 B)公有成员函数 C)私有数据成员 D)私有成员函数D29. 若有语句 “int i=1,j=2; coutj/I+i/j;”, 则输出结果是( )A)0B)2.5C)0.5D)2D30. 在类声明中,紧跟在“public:”后声明的成员的访问权限是( )。A)私有B)公有C)保护D)默认B31. 关于函数重载,下列叙述中错误的是 A 重载函数的函数名必须相同 B 重载函数必须在函数形参个数或类型上有所不同 C 重载函数的返回值类型必须相同 D 重载函数的函数体可以有所不同C32. 以下
11、关键字不能用来声明类的访问权限的是_。A)public B)static C)protected D)privateB33. 在下列函数原型中,可以作为类AA构造函数的是( )。A)void AA(int); B)int AA( ); C)AA(int)const; D)AA(int);D34. 有如下程序:#include using namespace std;class AAint n;public:AA(int k):n(k) int get( ) return n;int get( )const return n+1;int main( )AA a(5);const AA b(6);
12、couta.get( )b.get( );return 0;执行后的输出结果是( )。A)55 B)57 C)75 D)77B35. 有如下类定义:class AAint a;public:int getRef()const return &a; /int getValue()const return a; /void set(int n)const a=n; /friend void show(AA aa)const couta; /;其中的四个函数定义中错误的是( )A) B)C) D)D36. 有如下程序:#include using namespace std;class MyClas
13、spublic:MyClass() cout *; MyClass(MyClass& a) cout #; MyClass() cout ; ;int main()MyClass a;MyClass b(a);return 0;运行时的输出结果是( )。A)*#B)#*C)*#D)#*C37. 有如下程序:#includeusing namespace std;class testprivate:int a;public:test()coutconstructorendl;test(int a)coutaendl;test(const test& test)a= test.a;cout”cop
14、y constructorendl;test()coutdestructorendl;;int main( )test A(3);return 0;运行时输出的结果是A) 3 B) constructor destructorC) copy constructor destructor D) 3 destructorD38对于一个类定义,下列叙述中错误的是( ) A) 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 B) 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C) 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D) 如果已经定义了构造函
15、数和拷贝构造函数,编译器不会生成任何构造函数B39. 有如下类定义:class Foopublic:Foo(int v) : value(v) / Foo() / private:Foo() / int value = 0; / ;其中存在语法错误的行是A) B)C) D)D40. 有以下程序#includeusing namespace std;class MyClasspublic:MyClass(int n)number = n;MyClass(MyClass &other) number=other.number; MyClass()private: int number;MyClas
16、s fun(MyClass p)MyClass temp(p);return temp;int main()MyClass obj1(10), obj2(0);MyClass obj3(obj1);obj2=fun(obj3);return 0;程序执行时,MyClass类的拷贝构造函数被调用的次数是A)5 B)4 C)3 D)2B二、填空题(共60分)下面1-8每题1分,9-20每题2分,21-26每题3分,27-28每题5分。1. C+是面向 的程序设计语言。对象2. 在C+语言中,032表示一个_八_进制数,而0x23表示一个_十六_进制数。3. 高级语言屏蔽了机器的细节,提高了语言的_
17、。抽象层次4. C+中只有两个逻辑常量:true和 _。false5. 已知一个函数的原型是:int fn(double a);若要以5.27为实参调用该函数,应使用表达式 _。fn(5.27)6. 非成员函数应声明为类的_函数才能访问这个类的private成员。友元7. 若有定义语句”int x=20,y=20 z=10;”,则表达式xz&y=z的布尔值为_。false8. 在类的对象被创建的时候,_函数会被系统自动调用。构造9. -7的二进制补码表示(8位)为 _ _ _ _ _ _ _ _。10. 执行语句序列:int a=1,b=1;b=(a=3*4,a=a*5);coutbendl;
18、输出结果为_。6011. 若有定义语句:int a=3,b=2,c=1;,则表达式ab?a:b的值是 。212. 执行语句序列:int x=10,&r=x; r+;coutx-rendl; 输出结果为_。11-1113. 下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。bool fun(char *str)int i=0, j=0;while (strj) _ ;j+for(j-; i=14下面程序运行的结果是 。*#*#*#*#$#include using namespace std;void main() int i;
19、 for (i=1;i=6;i+) if(i%3) cout *; else continue; cout #; cout $endl;15. 已知递归函数f的定义如下:int f (int n)if(n2) return 1; else return n*f(n-2);则函数调用语句f(6)的结果是 。2416. 执行下列语句后,变量sum的值是_.7int sum =1;for (int i=1;i=i;j-) sum+;17. 下列程序的输出结果为Object id=1Object id=2请将程序补充完整。#include using namespace std;class Point
20、 public: Point(int xx=0, int yy=0) X=xx; Y=yy; countP+; Point( ) countP-; static void GetC( ) cout Object id=endl; private: int X,Y;static int countP; ;_ /静态数据成员的初始化int Point:countP=1;int main( ) Point:GetC( );Point A(4,5); A.GetC( ); return 0;18. 如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容。class myClass
21、 int data;public: myClass(int value);/构造函数 myClass(const _ anotherObject);/拷贝构造函数myClass&19. 若下面程序运行时输出结果为1,A,10.12,B,3.5请将程序补充完整。#include using namespace std;int main()void test(int, char, double _ );c=3.5test(1, A, 10.1 );test(2, B);return 0;void test(int a, char b, double c)couta,b,cendl;20. 有如下类
22、声明:Class MyClassint i;private:int j;public:int m,n;其中,私有成员的数量为_。221写出执行完下列代码段之后指定变量的值:bool x =false,y=true,z=false;x=x&y|z;falsey=x|y&z;falsez= !(x!=y) | (y=z);true则x= ; y= ; z= ;22. 字面常量42, 4.2, 42L的数据类型分别是_、_、_。int double long23. 下面程序的运行结果为_。43#include class Aint num;public:A(int i)(num=+i;A(A &a)
23、num=a.num+;void print()(coutnum;void main()A a(2),b(a);a.print();b.print();24. 下面程序段的运行结果为 :a=-5int i=0,a=0,s=1;do a=a+s*i; s=-s; i+;while(i10);cout a=aendl;25. 已知函数f的定义如下:int f (int n)coutn;return +n;则函数调用语句f(f(2)的结果是 。2326. 有4个由用户任意输入的整数a、b、c和d,要求按照从大到小的顺序输出,请补充以下程序使其满足要求。 #include using namespace
24、 std;void main() int a, b, c, d, t; cin abcd; if (ab) t =a; a=b; b=t; if (ac) t =a; a=c; c=t; if (ad) t =a; a=d; d=t; if (_) t =b; b=c; c=t; bc if (bd) t =b; b=d; d=t; if (cd) t =c; c=d; d=t; cout a,b,c,dendl;27. 实现两个重载函数,使得下面程序的结果为:34#include using namespace std;_int main()int a=2,b=3,c=4;double x=
25、5.5,y=2.1,z=4; coutmiddle(a,b,c)endl;coutmiddle(x,y,z)endl; return 0;28. 有如下程序: #include using namespace std;class Exampublic: _ _void print()coutabendl;private: int a;const int b; ; int main() Exam obj(1,2);obj.print(); return 0;实现Exam类的构造函数和析构函数,使得程序的输出结果为:开始构造12开始析构2012年秋季学期计算机程序设计基础期中试题(A卷)答卷学号_
26、 班级_ 姓名_ 老师名_ 得分_一、选择题1-5: _ _ _ _ _ 6-10: _ _ _ _ _ 11-15:_ _ _ _ _ 16-20:_ _ _ _ _ 21-25:_ _ _ _ _ 26-30:_ _ _ _ _ 31-35:_ _ _ _ _ 36-40:_ _ _ _ _ 二、填空题(如果有多个填空,答案之间用空格或者顿号隔开)专心-专注-专业1:_2:_3:_4:_5:_6:_7:_8:_9:_10:_11:_12:_13:_14:_15:_16:_17:_18:_19:_20:_21:_22:_23:_24:_25:_26:_27.#include using namespace std;_int main()int a=2,b=3,c=4;double x=5.5,y=2.1,z=4; coutmiddle(a,b,c)endl;coutmiddle(x,y,z)endl; return 0;28.#include using namespace std;class Exampublic: _ _void print()coutabendl;private: int a;const int b; ; int main() Exam obj(1,2);obj.print(); return 0;