华中科技大学C++考试模拟题

更新时间:2024-04-08 06:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++模拟试卷

一、单选题(每题2分)

1. 下面选项中不属于面向对象程序设计特征的是(C) 。

A)继承性 B)多态性 C)相似性 D)封装性 2. 有如下程序段: int i=1; while(1) { i++;

if (i==10) break;

if(i%2==0) cout<<’*’; }

执行这个程序段输出字符*的个数是(C) A. 10 B. 3 C. 4 D.5

3. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。

A) 0 B) 4 C) 8 D) 6

4. 下列有关数组的叙述中,正确的是( B ) A)C++中数组的存储方式为列优先存储

B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从1开始,至数组长度n结束

D)数组指针的语法形式为:类型名 *数组名[下标表达式]; 5. 若有下面的函数调用: fun(a+b, 3, max(n-1, b));

其中实参的个数是( A ) A)3 B)4 C)5 D)6

6. 以下哪一关键字可用于重载函数的区分( C ) A)extern B)static C)const D)virtual 7. 下面程序的输出结果是( B ) #include 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); } k += fun(i); cout << k; }

A)13 B)14 C)15 D)16 8. 下面的程序段的运行结果为( D ) char str[] = \cout << *(p+2) << endl;

A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’ 9. 下面的程序段的运行结果为( D ) char str[] = \cout << *(p+2) << endl;

A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’ 10. 以下程序的输出结果是:(D ) #include using namespace std; int fun(char *s) { char *p=s;

while (*p!='\\0') p++; return (p-s); }

void main(){

cout<

A.0 B. 1 C. 2 D. 3 11. 实现运行时多态的机制是( A ) A)虚函数 B)重载函数 C)静态函数 D)模版函数

12. 假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A) x.a B) x.a() C) x->GetValue() D) x.GetValue( )

13. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。

A) int AA::a( ) B) int AA:a() C) AA::a() D) AA::int a() 14. 下面程序的输出结果是( C ) #include 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,2 15. 下面程序的输出结果是( C ) #include using namespace std; class Base {

public: virtual void f() { cout << “f0+”; } void g() { cout << “g0+”; } };

class Derived : public Base {

public: void f() { cout << “f+”; } void g() { cout << “g+”; } };

void main() { Derived d; Base *p = &d; p->f(); p->g(); } A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+

二、看程序写结果(每题5分)

1.#include

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<<\ cout<<\ }

程序运行结果为: 2.

#include #include using namespace std; void main(void)

{ char a[]=”abcde”; int n ;

void fun(char s[],int k); n=strlen(a); fun(a,n);

cout<

void fun(char s[],int k) { int x,y; char c; x=0;

for(y=k-1;x

{ c=s[y];s[y]=s[x];s[x]=c; x++; } }

程序运行结果为: 3.

#include #include 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 <

程序运行结果为:

#include using namespace std; class B { public:

B(); B(int i); ~B();

void Print() ; private:

int b; };

B::B()

{ b=0;

cout<<\}

B::B(int i) { b=i;

cout<<\}

B::~B()

{ cout<<\void B::Print()

{ cout<

class C:public B { public: C();

C(int i,int j); ~C();

void Print() ; private: int c; };

C::C()

{ c=0;

cout<<\}

C::C(int i,int j):B(i) { c=j;

cout<<\}

C::~C()

{ cout<<\void C::Print() { B::Print();

cout<

void main()

{ C obj(5,6); obj.Print(); }

程序运行结果为: 。

三、程序填空(每空2分)

1.输入某一年的年份和月份,计算该月的天数 #include using namespace std; void main()

{ int year,month,day;

cout<<\ cin>>year>>month; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10:

case 12: _____(1) ____;break; case 4: case 6: case 9:

case 11: _____(2) ____;break;

case 2:if (______________(3) _______ _______) day=29; else

day=28; break;

default_:cout<<\ }

if (day!=0)

cout<<\}

2. 请将下列程序补充完整,使得输出结果为 Destructor Derived Destructor Base 程序如下:

#include using namespace std; class Base {

public: _____(4) ___ { cout << “Destructor Base”<< endl; } };

class Derived : public Base {

public: ~Derived(){ cout << “Destructor Derived” << endl; } };

void main () {

Base *pBase = new Derived;

_____(5) ___ ; }

四、程序改错(每题5分)

错误的语句在/**** found *****/的下面。

1、输入一字符串,然后将其中的大写字母改变成小写字母。 #include using namespace std; void main( ) { int i = 0 ; char s[120] ; cout<< \ cin.getline(s,120); /********found********/ while (s) { /********found********/ if ( s[i] >= 'A' ) s[i] = s[i] - 'A' + 'a' ; i++; } cout<

2、要求下面的程序输出: i=10

#include using namespace std;

/********found********/ class MyClass() {

public: /********found********/ void ~MyClass(){}; MyClass(int i) { cout<<'i'<<'='<

void main() { MyClass obj(10); }

五、编程题(每题10分)

1.计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。

2.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

3.编写一个学生和教师数据输入和显示程序,学生数据要求有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类,学生数据中的班号和成绩的输入和显示在student类中实现,教师数据中的职称和部门的输入和显示在teacher类中实现。最后在主函数中进行该类的测试。 下面给出了基类person的主要成员: (1) 私有成员: int no;编号

char name[10]; 姓名 (2) 公有成员:

void input(); 编号和姓名的输入 void display(); 编号和姓名的显示

本文来源:https://www.bwwdw.com/article/mgrr.html

Top