1、精品文档东 南 大 学 考 试 卷一 .选择题 (以下各题均只有一个正确答案,每题 1 分,共 20分 )5.有关运算符重载的说法,正确的是:( B )A. 运算符重载函数最多只能有一个形参B. 调用重载运算符的成员函数时,必须有一个运算符的操作数是对象或引用C. 调用重载运算符的成员函数时,调用程序的右操作数必须是对象D. 调用重载运算符的友元函数时,调用程序的右操作数必须是对象6 重载运算符时,运算符的(A )A) 优先级和结合律均不能改变; B) 优先级和结合律均可以改变。C) 优先级可以改变,但结合律不能改变;D) 优先级不能改变,但结合律可以改变;7 已知变量 f 为 float类型
2、, i 为 int类型, 以下表达式语句中能够实现将f中的数值保留小数点后两位,第三位进行四舍五入运算的是(C )A) ABC B) BCD C) BCD) CDA. f=(f*100+0.5)/100.0;B. i=f*100+0.5,f=i/100.0;C. f=(int)(f*100+0.5)/100.0;D. f=(f/100+0.5)*100.0;8设 a=20,b=30; 执行语句 a+=b;b=a-b;a-=b;后, a、 b的值分别是 (D)A. 20,20 B. 30,30 C. 20,30 D. 30,209. 下面各说明语句中合法的是 (C) :A) ADE B) ABC
3、 C) BDE D) HFDA. static int n; int floppyn;B. char ab10;C. char chi-200;D. int aaa5=3,4,5;E. float key =3.0,4.0,1,0; F. char disk ;10 函数原型为abc(float x,char y);该函数的返回值类型为(A)。A) intB) charC) voidD) float11.设有数组说明int a10,数组中各元素已含有如下数据:数组元素 : a0 a1 a2 a3 a4 a5 a6 a7 a8 a9元素的值 : 9 412 82 10 751 3以下 (B)不能
4、正确访问该数组的数组元素。A)aa0B)aa2C)aa1+a9 D)aa8+a212 C+ 语言的可执行程序是从(C)开始执行。1欢迎下载精品文档A.程序中第一条可执行语句B.程序中第一个函数C.程序中的 main 函数 D.包含文件中的第一个指令13.若定义一个返回值为整型的内联函数func(int a) , 在函数名 func前应有说明 (D)。A. int inlineB. int insideC. inside intD. inline int14 设有定义: int a=1,b=10;则执行以循环下语句后,dob-=a;a+;while(b-0);a 、 b 值为 (D)A) 8 2
5、 B)-2 -1 C) -1 8 D) 2 815 若有以下语句,则下面(B)是正确的描述static char x =”12345”;static char y =1,2,3,4,5;A) x数组和 y数组的长度相同B) x数组长度大于 y 数组长度C) x数组长度小于 y数组长度 D) x数组等价于 y数组16若 a,b 均为 int型变量,且 a=100, 则以下关于 for 循环语句的正确判断是 (C)A) 循环体只执行一次 B )死循环 C )循环体不执行 D )输出 -for(b=100;a!=b;+a,b-) cout” -n ” ;若将其中的表达式b=100 改为 b=99,则
6、正确的判断是(B)A) 循环体只执行一次 B )死循环 C )循环体不执行 D )输出 -17 在以下存储类型中, (C) 是用于定义动态类型的变量。A static和 auto B register和 extern C register和 auto D static和 register19 以下正确的描述为(C)A ) 每个 C+ 程序必须在开头含有预处理命令#includeB ) 预处理命令必须位于C+ 源程序的首部C ) 在 C+ 中,预处理命令都以#开头D ) C+ 语言的预处理命令只能实现宏定义和条件编译的功能20 以下不正确的描述为(B)A ) 在函数之外定义的变量称为外部变量,外
7、部变量是全局变量。B ) 在函数之内说明的外部变量是局部变量,仅在本函数中有效。2欢迎下载精品文档C ) 在函数之外说明的静态变量是全局变量,其作用域整个程序文件。D ) 文件作用域的范围是一个程序文件,但必须符合 “ 定义在前,使用在后 ” 的规则。21.如果有说明int i,ch;则下列循环语句(A)。for(i=0,ch=0;ich;A ) 最多执行 10次 B )最多执行9次C ) 是无限循环D )循环体一次也不执行22 设有宏定义如下:#define MIN(x,y) (x)(y)?(x):(y)#define T(x,y,r) x*r*y/4则执行以下语句后,s1、 s2的值分别为
8、(A)。int a=1,b=3,c=5,s1,s2;s1=MIN(a=b,b-a); s2=T(a+,a*+b,a+b+c);A) 3 27B) 27 3C ) 24 1D) 3241) s1=(a=b)(b-a) ?(a=b):(b-a)2) s2= a+*a+b+c*a*+b/y = 3*3+3+5*3*4/4= 27二 .阅读程序,回答问题 (共 32分 )1. (本题 3 分)#includeclass A int x,y; public:A(int a,int b)x=a; y=b; coutABCt; A() x=3; y=4; coutCBAn;void Show() coutx
9、=xty=yt;A()coutXYZn;void main(void) A s(1,2); s=A(2,3); s.Show(); 问题一:本程序输出的第一行是(1)(1) ABC ABC XYZ问题二:本程序输出的第二行是(2)(2) x=2 y=3 XYZ2.(本题 4分)#includeclass A。3欢迎下载精品文档public:A(int a) x=a; coutx=xt*A*n; A() cout-A-n; private:int x;class BA y; int s;public:B(int a,int b,int c): y(a+b+c) s=c-b; couts=st*B
10、*n; B() cout-B-n; ;void main(void) B s(1,2,3); 问题一:本程序共输出4 行问题一:各行的输出结果依次是(4)x=6 *A*/s=1 *B*/-B-/-A-3 (本题 3分 )#includeclass nodeint x,y;public:node(int a,int b) x=a; y=b; coutnode_1n; node( ) x=a.x; y=a.y; coutnode_2n; void Show() coutx=xty=yn; ;void main(void)node f1(5,6); node f2(f1); f2.Show();问题
11、一:类中定义了两个构造函数,其中一个是缺省参数的构造函数。但主函数中的对象要求有对应的形参,这个形参的正确定义是(5)问题二:当对应的形参被正确定义后,执行结果依次是(6)(5)node &a(6) node_1/node_2/x=5 y=64. ( 5 分)#includeclass A int x; public:。4欢迎下载精品文档void Show() coutx=xt; A(int a=10) x=a; cout*A*n; A()cout-A-n; ;void main(void) A f; f.Show(); f=20; f.Show(); 问题一:本程序共输出(7)行,(7)4问
12、题二:各行输出结果依次是(8)(8)*A*/x=10 *A*/-A-/x=20A-5.( 6分)#includeclass A int x;public:A(int a) x=a; coutx=xt*A1*n; A(A &s) x=s.x+1; cout*A2*n; A()coutx=xt-A-n; ;void main(void) A f1(1), f2(f1); 问题一:本程序共输出 (9) 行,类中的析构函数被访问 (10) 次问题二: 各行的输出结果依次是 (11)(9)4(10) 2(11) x=1 *A1*/*A2*/x=2 -A-/x=1 -A-6. (10分 )#include
13、enum eca,b,c,d,e;char cp=a,b,c,d,e;class Rectprivate:int width,hight,color;public:Rect(int x=10,int y=10,int c=a):width(x),hight(y),color(c);void SetRec(int w,int h,int c)width=w;hight=h;color=c;int Area()return width*hight;Rect operator +(Rect b);void Display();。5欢迎下载精品文档;Rect Rect:operator +(Rect
14、b)Rect s;s.width=width+b.width;s.hight=hight+b.hight;s.color=(color+b.color)%5;return s;void Rect:Display()coutw=widthh=hightc=cpcolorvoid main()Rect A(20,40,b),B(30,50,d);A.Display();B.Display();B.SetRec(50,70,e);B.Display();A=A+B;A.Display();coutA:A.Area()endl;coutB:B.Area()endl;问题一:本程序共输出(12)行问题二
15、:各行的输出结果依次是(13)12) 6(13) w=20 h=40 c=b/w=30 h=50 c=d/w=50 h=70 c=e/ w=70 h=110 c=a/A:7700/B:3500三、 完善程序,并回答问题: (每空 1 分,共 28分 )1. 确定一个数 (例如 i)是否为素数的算法是,只要2 i之间的所有自然数都不能整除 i ( 其中 i取整数 ),则 i必为素数。 显然, 只要 i能被其中任一个数整除,i 必然不是素数。 以下程序用于求300 以内的素数, 并按每行 5 个素数的格式输出。(9)#include#include/Aprime(int _(1)_,int _(2
16、)_)(1)a (2) bint n;for(n=2;n=a;n+)if(b % n=0)_(3)_ ;(3) breakreturn(n);void main()。6欢迎下载精品文档int k,i,j;cout2t3;for(k=2,i=5;i=_(4)_)(4) j+1coutt_(5)_;(5) k+if(k % 5=0)coutn;coutn;问题一:算法中是把(D)作为待求素数A) 300 以内的所有自然数 B) 300 以内的所有奇数C) 2300 之间的所有自然数 D) 5300 之间的所有奇数问题二:算法中有一个变量用作求素数的除数,这个变量是(7),其中作为最大除数的变量是(
17、8)(7)n (8) j问题三:与A 行预处理指令有关的语句是(9)(9) j=sqrt(i);2. ball 是关于球的类定义,其数据成员包括半径和重量。通过运算符重载实现对象的初始化(赋值)、两个对象相加和判断两个对象是否相等的运算。#includeclass ballprivate:float radii;float weight;public:ball(float x=0,float y=0) _(10)_ (10) radii=x ,weight=y float getr( )return radii;float getw( )return weight;int operator =
18、(ball);void operator ( )(float,float);void operator +=(ball B);int ball:operator =(ball B)if(_(11)_) (11) radii=b.radii& weight=b.weight return 1;elsereturn 0;void ball:operator ( )(float a,float b)。7欢迎下载精品文档_(12)_=a;(12) radii_(13)_=b;(13)weightvoid ball:operator +=(ball B)radii+=_(14)_;(14) B. rad
19、iiweight+=_(15)_;(15) B. weightvoid main( )ball a,b(30,500),c(40,600);a(b.getr()+10,b.getw()+100);couta.radii=a.getr() a.weight=a.getw()endl;b+=c;coutb.radii=b.getr() b.weight=b.getw()endl;if(a=c) couta球和 c球相等 !endl;else couta球和 c球不相等 !endl;C+ 程序设计试卷26。8欢迎下载精品文档欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书, 学习资料等等打造全网一站式需求。9欢迎下载