好文档 - 专业文书写作范文服务资料分享网站

C++试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

}

答案:static int x;,int Test::x=30;

[解析]从成员函数访问方式类名::成员可知是静态成员所以static int x;从结果要对初始 化为30,且在类外进行初始化, int Test::x=30;。

3. 在下列程序的空格处填上适当的字句,使输出为:0,2,10。

#include <> #include <> class Magic {double x; public:

Magic(double d=:x(fabs(d)) {}

Magic operator+(______) {

return Magic(sqrt(x*x+*); }

_______operator<<(ostream & stream,Magic & c) { stream<<; return stream; } };

void main() {Magic ma;

cout<

答案:operator+(Magic&c),friend ostream&operator

[解析]对加法进行重载,operator+(Magic & c),是对插入符进行重载,要访问成员所以定义 为友元函数,friend ostream & operator。

4. 下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。

#include _________; _________; void main() {double rad; cout<<\cin>>rad; double l=*pi*rad; double s=pi*rad*rad;

cout<<\\n The long is:\

cout<<\:\答案:using namespace std,#define pi

[解析]进行输入或输出要引入iostream, 所以using namespace std;从标点看没有分号,所以 使用宏定义,#define pi 。

5. 程序实现大写字母转换成小写字母。

#include <> void main() {char a; _______; cin>>a; if(_______) a=a+i;

cout<

答案:int i=32;,a>=A && a<=Z

[解析]大写字母变小写字母相差32,需要对i声明并初始化。大写字母变小写字母。要判断字 符是大写字母。

五、程序分析题(本大题共4小题,每小题5分,共20分)

1. 给出下面程序输出结果。

#include<> class a {public:

virtual void print()

{cout<< \};

class b:public a {};

class c:public b {public:

void print(){cout<<\};

void show(a *p) {(*p).print(); }

void main() {a a; b b; c c; show(&a); show(&b);

show(&c); }

答案:a prog... a prog... c prog...

[解析]考查多态性的。a类对象调用本身的虚函数,b类因为没有覆写print,所以仍然调用基 类的虚函数。而c类重新定义print虚函数,所以调用c类的print。

2. 给出下面程序输出结果。

#include <> #include <> #include <> bool fun(long n); void main()

{long a=10,b=30,l=0; if(a%2==0) a++; for(long m=a;m<=b;m+=2) if(fun(m)) {if(l++==0) cout <

bool fun(long n) {int sqrtm=(int)sqrt(n); for(int i=2;i<=sqrtm;i++) if(n%i==0) return false; return true; }

答案:11 13 17 19 23 29

[解析]循环体用来判断n是否是质数的函数,在main函数判断10~30之间质数。

3. 给出下面程序输出结果。

#include <> class Test {int x,y; public:

Test(int i,int j=0) {x=i;y=j;}

int get(int i,int j) {return i+j;}

};

void main()

{Test t1(2),t2(4,6); int (Test::*p)(int,int=10); p=Test::get;

cout<<(t1.*p)(5)<

cout<<(p1->*p)(7,20)<

答案:15 27

[解析]指向类成员函数的指针的使用,*p指向Test类中有两个参数的函数的一个指针。 P=Test::get.这样p就和get发生了联系。(t1.*p)(5)等价于调用一个参数的get函数。

4. #include <>

#include <> #include <> class student {char name[8]; int deg; char level[7];

friend class process; 已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有 GetPerim()函数计算对象的周长,并编写测试main()函数。 class Shape {public: Shape(){} ~Shape(){}

virtual float GetPerim()=0; }

答案:class Rectangle:public Shape {public:

Rectangle(float i,float j):L(i),W(j){} ~Rectangle(){}

float GetPerim(){return 2*(L+W);} private: float L,W; };

class Circle:public Shape {public:

Circle(float r):R(r){}

float GetPerim(){return *2*R;} private:

float R; };

void main() {Shape * sp; sp=new Circle(10);

cout<GetPerim ()<GetPerim()<

C++试题及答案

}答案:staticintx;,intTest::x=30;[解析]从成员函数访问方式类名::成员可知是静态成员所以staticintx;从结果要对初始化为30,且在类外进行初始化,intTest::x=30;。3.在下列程序的空格处填上适当的字句,使输出为:0,2,10。#include#includ
推荐度:
点击下载文档文档为doc格式
39tga7gk3b3z01x0bvw21wxgu8k84a00nhi
领取福利

微信扫码领取福利

微信扫码分享