test1

发布时间 : 星期一 文章test1更新完毕开始阅读

运行时的输出结果是( )。

A)112444 B)11114444 C)121444 D)11314444

(28) 下列描述中错误的是(B ) A)析构函数可以被继承 B)虚函数不能被继承 C)派生类可以有多个基类

D)纯虚基类的子类可以是虚基类

(29) 下列关于输入流类成员函数 getline( )的描述中,错误的是 。A A)该函数是用来读取键盘输入的字符串的 B)该函数读取的字符串长度是受限制的 C)该函数读取字符串时,遇到终止符便停止 D)该函数读取字符串时,可以包含空格

30.关于在调用模板函数时模板实参的使用,下列表述正确的是 。D

A)对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息, 则都可以省略

B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

C)对于虚拟型参数所对应的模板实参,若能够省略则必须省略 D)对于常规参数所对应的模板实参,任何情况下都不能省略 二、简答、程序设计(40分、每道题10分)

(1) 判定整数n=23是否为素数,是输出素数,否则输出非素数。 (2) 运算符重载?

(3) 定义立方体Box类,并从派生圆柱类? (4) 虚函数的定义与用法? 答案:

二、简答、程序设计

(1) 判定整数n=23是否为素数,是输出素数,否则输出非素数。 #include int main() {

using namespace std; int n =64,m=0,i=2; while(i

if(i>=n)

5

cout<

cout<

(2) 运算符重载

系统的基本数据类型,如long,int,double,系统提供了丰富的运算符。运算符重载 解决了自定义类对象运算问题。运算符重载的主要规则如下:

? 不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 ? 允许重载除“.”“ ∷”“?:”“ *”“ #”之外的所有运算符 ? 重载不能改变运算符的优先级别

? 重载运算符的函数不能有默认的参数

? 重载的运算符必须和自定义类型的对象一起使用,其参数至少应有一个是类对象 . 用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&”不必用户重载 class。

(3) 定义立方体Box类,并从派生圆柱类? class Box{ protected: int id; double orgin[3];//坐标原点 public: Box(int n,double point[3]){id=n;for(int i=0;i<3;i++)orgin[i]=point[3];} };

class Cylinder : public Box{ protected: double height;//高度 double radius; //圆柱半径 public: Cylinder(int n,double point[3],double h,double r):Box(n,point),height(h),radius(r){} };

(4) 虚函数

虚函数指在继承类中声明,但是没有定义的函数,需要在派生类中定义的函数。实质为函数指针

声明语法: 普通虚函数:

Virtual 函数类型 函数名称(函数参数); 纯虚函数:

Virtual 函数类型 函数名称(函数参数)=0; 一、选择题(60分,每题2分) (1) 以下叙述中错误的是B

A)算法正确的程序最终一定会结束 B)算法正确的程序可以有零个输出 C)算法正确的程序可以有零个输入

D)算法正确的程序对于相同的输入一定有相同的结果 (2) 以下叙述中错误的是D

6

A)C++程序必须由一个或一个以上的函数组成 B)函数调用可以作为一个独立的语句存在 C)若函数有返回值,必须通过return语句返回

D)函数形参的值不可以传回给对应的实参

(3) 设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是B A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m (4) 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A A)(!a==1)&&(!b==0) B)(ac ? c:k;

执行该程序段后,k的值是 A)3 B)2 C)1 D)0 (6) 有以下程序C main()

{ char p[]={'a','b','c'}, q[]=\

printf(\};

程序运行后的输出结果是 A)4 4 B)3 3 C)3 4 D)4 3 (7) 有以下程序B main() {

char a1='M',a2='m'; cout<<(a1,a2)<

以下叙述中正确的是

A)程序输出大写字母M B)程序输出小写字母m C)格式说明符不足,编译出错 D)程序运行时产生出错信息 (8) 若有以下定义和语句: B

int w[2][3],(*pw)[3]; pw=w; 则对w数组元素非法引用是 A)*(w[0]+2) B)*(pw+1)[2] C)pw[0][0] D)*(pw[1]+2) (9) 若有以下程序片段: C

char str[]=\ cout<

上面程序片段的输出结果是 A)3 B)4 C)6 D)12 (10) 设有如下定义: B

struct sk

{int a;float b;}data,*p;

若有p=&data;,则对data中的a域的正确引用是 A)(*p).data.a B)(*p).a C)p-data.a D)p.data.a

7

(11) 以下对枚举类型名的定义中正确的是 B

A)enum a={one,two,three}; B)enum a {one=9,two=-1,three}; C)enum a={\ D)enum a {\(12) 以下程序运行后,输出结果是 D

main( )

{ char *s=\ s+=2; cout<

A) cde B) 字符c的ASCLL码值 C) 字符c的地址 D) 出错 (13) 设有如下的变量定义: C

int i =8,k ,a,b ;

unsigned long w=5; double x=1.42, y=5.2;

则以下不符合C++语言语法的表达式是 A) a+=a-=(b=4)*(a=3) B) x%(-3) C) a=a*3=2 D) y=float(i) (14) 假定有以下变量定义:C

int k=7 ,x=12; 则能使值为3的表达式是

A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)

(15) 设x和y均为int 型变量,则以下语句:x+ =y; y=x-y; x-=y;的功能是 D

A) 把x 和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 (16) 设有如下定义: D

int a=1,b=2,c=3,d=4,m=2,n=2;

则执行表达式:(m=a>b)&&(n=c>d)后,n的值为 A} 1 B)2 C)3 D)0

(17) 设有 int x=11; 则表达式 (x++ * 1/3) 的值是A

A) 3 B) 4 C) 11 D) 12 (18) 若有以下定义: C

float x;int a,b;

则正确的switch 语句是 A)switch(x) B)switch(x) { case1.0:printf(\ { case1,2:printf(\ case2.0:printf(\ case3:printf(\ } } C)switch (a+b) D)switch (a+b); { case 1:printf(\ { case 1:printf(.\ case 1+2:printf(\ case 2:printf(\ }

(19) 假定所有变量均已正确说明,下列程序段运行后x的值是 A

a=b=c=0;x=35; if(!a)x--;

else if(b);if(c)x=3;

8

联系合同范文客服:xxxxx#qq.com(#替换为@)