您好,欢迎来到年旅网。
搜索
您的当前位置:首页C++试卷

C++试卷

来源:年旅网
《c++程序设计》

一、填空题(每题3分)

1. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。 2. float和double类型的数据分别占用_________和________个字节。

3. 当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。 4. 在C++中,声明构造函数和析构函数时, ______使用const或volatile关键词。

5. const放在函数前面使常量成员返回 ______ 。如果定义一个const对象,则只能访问 该对

象的const 成员函数。

6.析构造函数是和______同名的函数。

7.若需要定义一个标识符常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字 .

8.逻辑表达式x>3&&x<10 的相反表达式为 . 9.逻辑表达式a>b ||b = =5的相反表达式为 .

10.假定一个二维数组的定义为”char a[5][6];”,则该数组所含元素的个数为 ,所占存储空间的字节数为 .

二、单选题(每题2分,在下列各题的备选答案中,选出一个正确答案,并将其号码填写在题目后面的括号内。)

1.设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。 A. 12 B. 144 C. 156 D. 288

2. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式

1abc的表达式是( )。

A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c

3. x>0 || y==5的相反表达式为( )。

A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5

4.设x和y均为bool量,则x && y为真的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假

5. 假定下列x和y均为int型变量,则不正确的赋值为( )。

A. x+=y++ B. x++=y++ C. x=++y D. ++x=++y 6. switch语句能够改写为( )语句。

A. for B. if C. do D. while 7. 在下面的字符数组定义中,哪一个有语法错误。( )。

A. char a[20]=”abcdefg”; B. char a[]=”x+y=55.”; C. char a[15]; D. char a[10]=’5’; 8. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。

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

9. 若定义了函数 double *function(), 则函数function的返回值为( )。 A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址

10. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( )个。 A.1 B.2 C. 4 D. 5

11. 设有如下函数定义

int f(char *s) { char *p=s;

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

在主函数中用cout<13. 下列给字符数组赋初值时,正确的是( )。

A. char s1[]=”abcdef”; B. char s2[4]=”abcd”;

C. char s3[2][3]={“abc”,”xyz”}; D. char s4[4][]={„a‟,‟x‟,‟s‟,‟t‟}; 14. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为( )。

A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 15. 假定p指向的字符串为”string”,则cout<三、问答题(每题10分)

1. 多重继承的构造顺序一般可分为4步,下面给出这4个步骤: 2. 下面的程序的正确的输出结果是什么?

#include #include class base{ public: virtual char * fun(void)const=0;

};

char * base::fun(void)const {return \"base\";}

class derived1:virtual public base{ public: char * fun(void)const{ return \"derived1\"; }

};

class derived2:virtual public base{ public: char * fun(void)const{ return \"derived2\"; }

};

class subderived:public derived1,public derived2{ public: char * fun(void)const{ char * pch; pch=new char[strlen(derived1::fun())+strlen(derived2::fun())+1]; strcpy(pch,derived1::fun()); strcat(pch,derived2::fun()); return pch; }

};

void main(void){ base * pb;

pb=new derived1; cout<fun()<fun()<fun()<}

3. 下面这一程序是关于多重继承时构造函数的调用顺序问题,给出正确的输出结果并说明原因。

#include class base{ public: int b; base(){b=0;} };

class divide1:virtual public base{ int b1; public: divide1(){b=10;} };

class divide2:virtual public base{ int b2; public: divide2(){b=20;} };

class subdivide:public divide1,public divide2{ int d; };

void main(void){ subdivide d; int i=d.b; cout<4.大学里有这样几类人员:学生、教师、职员和在职读书的教师。给出这几类人员的类描述。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务