大一计算机期末考试VC++练习题.docx
大一期末考试VC+练习题一、选择题1 . C+语言属于(C )oA)自然语言 B)机器语言 C)面向对象语言D)汇编语言2 .下面选项中不属于面向对象程序设计特征的是(0 oA)继承性 B)多态性C)相似性D)封装性3 .可用作C+语言用户标识符的一组标识符是(B )oA) void define +WORDB) a3_b3_123 YNC) for -abc CaseD) 2a DO sizeof4 .假定一个二维数组的定义语句为“int a34 = 3,4, 2,8,6);",则元素的值为(A) oA) 0 B) 4 C) 8 D) 65 .下列情况中,哪一种情况不会调用拷贝构造函数(B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6 .以下哪一关键字可用于重载函数的区分(C )A) extern B) static C) constD) virtual7 .下列有关数组的叙述中,正确的是(B )A) C+中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名*数组名下标表达式;8 .下列有关继承和派生的叙述中,正确的是(C )A)派生类不能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9 .实现运行时多态的机制是(三、阅读程序,写出运行结果#include<iostream>#include<cstring>using namespace std;class CD (char name 20;int number;public:void Init(char* aa, int bb) (strcpy(name,aa);number二bb;)char* Getname () return name;int Getnumber () return number;void Output() cout« name <<''<< number «endl; );CD dx;void main() (CD dy;dx.Init("歌唱祖国 ”,30);dy.Init("义勇军进行曲",3*dx.Getnumber ()+5);dx.Output();dy.Output();)歌唱祖国30义勇军进行曲951. #include <iostream>using namespace std;int f(int a) return +a;)int g(int& a) return +a;)void main()int m=0,n=0;m+=f(g(m);n+=f(f(n);cout«nm=n«m«endl;cout«nn=n«n«endl;)2. #include <iostream>using namespace std;class Demo(public:Demo() cout«ndefault constructornn;Demo(const Demo &x)cout«ncopy constructornn;);Demo userCode(Demo b)Demo c(b);return c;void main()(Demo a,d; cout«ncalling userCode()nn;d 二 userCode(a);)执行上面的程序的过程中,构造函数Demo()和Demo(const Demo &x) 被调用的次数分别是多少次? 五、编写程序1、编写函数计算y=l!+2!+3!.n! , n作为参数传递,在主函数调用该函数 并输出结果。2、编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最 大值与最小值。测试结果。3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。要求有 参数的构造函数及复制构造函数A)虚函数 B)重载函数 C)静态函数 D)模版函数10 .若有下面的函数调用:fun(a+b, 3, max (n-1, b);其中实参的个数是(A )A) 3 B) 4 C) 5 D) 611 .下列关于this指针的说法正确的是(B )A) this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C) this指针是指向虚函数表的指针D) this指针是指向类的函数成员的指针12.在下列关于C+函数的叙述中,正确的是(C )13.A)每个函数至少要有一个参数C)函数在被调用之前必须先声明 下列运算符中,不能重载的是(B)D)每个函数都必须返回一个值 函数不能自己调用自己)A) &&B) !=D)->14.下面程序的输出结果是( #include <iostream> using namespace std; int i = 0;int fun (int n)static int a = 2; a+;return a+n;void main ()int k = 5;int i = 2;k += fun(i);15.k +=coutA) 13fun(i);« k;B) 14C)15D) 16下面的程序段的运行结果为(char str = job,*p = str;cout << * (p+2) << endl;D)字符,b'A) 98 B)无输出结果C)字符'b'的地址16.下面程序的输出结果是(C )#include <iostream> using namespace std; class A (public:A (int i) x = i; void dispa () cout << x <<; private : int x ;);class B : public A(public:B(int i) : A(i+10) x = i; void dispb () dispa () ; cout << x << endl; private :int x ;void main ()B b(2);b. dispb();A) 10,2 B) 12, 10 C) 12,2 D) 2,217 .下面程序的输出结果是(C )#include <iostream> using namespace std; class Base (public:Base(int i) cout << i; Base () );class Basel: virtual public Basepublic:Basel (int i, int j=0) : Base (j) cout << i;BaselO class Base2: virtual public Basepublic:Base2 (int i, int j=0) : Base (j)Base2() ); cout << i; Baselclass Derived : public Base2, publicpublic:Derived (int a, int b, int c, intd) : meml(a), mem2 (b), Basel (c), Base2 (d), Base(a) cout private:Base2Basel« b; mem2;meml;(1, 2, 3,4); );void main() Derived objDA) 134122B) 123412C) 14302012 D) 143212 cout << “g0+” ; :public Basepublic:void f ()void g();void main () cout << cout <<Derived d;A) f+g+B) fO+g+“f+” ; “g+” ; 19.下面程序的输出结果是(CBase *p = &d; p->f () ; p->g() ; C) f+gO+ D) fO+gO+)18 .下面程序的输出结果是(C #include <iostream> using namespace std; class Basepublic:virtual void f() cout void g();class Derived ftinclude <iostream>using namespace std; class Samplefriend long fun (Sample s)if (s. x < 2) return 1;return s. x * fun(Sample(s. x-l);) public:Sample (long a) x = a; private: long x;void main() (int sum = 0;for (int i=0; i<4; i+) (sum += fun(Sample (i); ) cout << sum;A) 12 B) 16 C) 10 D) 34 20.以下程序的输出结果是:(D ) ttinclude <iostream> using namespace std; int fun(char *s) char *p=s;while (*p!='0') p+; return (p-s);void main () cout<<fun (abc)<<endl;A. 0B. 1C. 2D. 321.有如下程序段:int i=l;while(1)i+;if (i-10) break;if(i%2=0) cout«, *'执行这个程序段输出字符*的个数是(0A. 10 B. 3 C. 4 D. 522 .下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明class B: virtual public A说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23 .有下类定义Class A (Char *a;Public:A():a(0) A (char *aa) 把aa所指字符串拷贝到a所指向的存储空间 A =;Strcpy (a, aa);A() delete a;);正确的选择是(A)A. new charLstrlen(aa)+1B. charstrlen(aa)+1C. charstrlen(aa)D. new charsizeof(aa)-124 .假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员, 它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X )o A) x. a B) x. a() C) x->GetValue () D) x. GetValue ()25 .假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外 定义,则函数头为(A )。A) int AA: :a( ) B) int AA:a()C) AA: :a()D) AA: : int a()26 .有如下程序:#include<iostream>using namespace std;class Testpublic:Test () Test () cout<<J #' ;);int main() Test temp2, *pTemp2;return 0;)执行这个程序输出星号(#)的个数为(B ) oA) 1 B) 2 C) 3 D) 427 .有如下程序:#include<iostream>using namespace std;class MyClasspublic:MyClass(int i=0)cout<<l;MyClass (const MyClass&x)cout<<2;MyClassfe operator= (const MyClass&x)cout<<3; return *this;MyClass()cout<<4;int main () MyClass objl (1),obj2 (2), obj3(objl);objl=obj2;return 0;运行时的输出结果是(A) oA) 1123444 B) 11114444 C) 121444 D) 1131444428 .有如下程序: ftinclude <iostream>using namespace std; class point (public:static int number;public:point () number+;point () number-;) );int point:number=0;void main() point *ptr; point A, B;(point *ptr_point=new point3; ptr=ptr_point;point C;deleted ptr;cout<<point:number;程序结果为(A)A) 3 B) 4 C) 6 D) 729 .友元运算符ob j+被C+编译器解释为(D )。A. operator+ (obj)B. operator+(obj, 0)B. obj. operator+( )D. obj. operator+(0)二、程序填空1.用递归法求从1到n的立方和:f(D=l(n=l)f(n)=f(n-l)+n3(n> 1)#include <iostream>using namespace std;int f(int);int main()int n,s;cout«ninput the number n:n;cin»n;s=f(n);cout«nThe result is n«s«endl;return 0;)int f(int n)递归法求立方和函数if (n= 1) return 1;else return ( f(n-l)+n*n*n);)3.请将下列程序补充完整,使得输出结果为“Destructor Derived Destructor Base”。 ftinclude <iostream> using namespace std;class Basepublic:virtual Base () cout << Destructor Base” << endl; );class Derived : public Base(public:"Derived() cout << Destructor Derived” << endl; );void main ()(Base *pBase = new Derived;delete pBase;