文档库 最新最全的文档下载
当前位置:文档库 › c上机试题及答案解析

c上机试题及答案解析

c上机试题及答案解析
c上机试题及答案解析

A.类的定义

Time Limit: 1000 MS Memory Limit: 32768 K

Total Submit: 659 (260 users) Total Accepted: 116 (114 users) Special Judge: No

Description

定义一个Circle类,有私有数据成员radius(半径);公有成员函数getArea(),用来计算圆的面积;实现能初始化半径的构造函数,以及拷贝构造函数。要在主函数中定义两个对象,并且输出两个对象的面积。其中第二个由第一个对象初始化,圆周率取为3.14。(15分)

Input

包含一个整数。

Output

输出一行,是两个对象的面积值。具体参照样例。

Sample Input

2

Sample Output

12.56 12.56

A题

#include

using namespace std;

class Circle

{

public:

Circle(int r):radius(r) {}

Circle(Circle &p);

double getArea(int radius); private:

int radius;

};

Circle::Circle(Circle &p)

{

radius = p.radius;

}

double Circle::getArea(int radius) {

float area;

area = 3.14*radius*radius;

return area;

}

int main()

{

int r;

double area1,area2;

Circle A(r);

Circle B(A);

cin>>r;

area1 = A.getArea(r);

area2 = B.getArea(r);

cout<

return 0;

}

B.静态数据成员

Time Limit: 1000 MS Memory Limit: 32768 K

Total Submit: 270 (173 users) Total Accepted: 60 (57 users) Special Judge: No

Description

定义一个Lingjian类,拥有整型的数据成员Weight和静态数据成员AllWeights (初始化为0),每定义一个对象,AllWeights增加该零件的重量Weight;析构函数中删除Weight;静态成员函数GetWeights()获取Weights。设计程序,定义两个对象之后,输出类的AllWeights。其中Weight是在main()函数中从文件读数对单个零件重量赋值。(15分)

注意:必须按照描述要求书写代码,否则不给分。

Input

包含一个整数。

Output

输出一行,是Lengths的值。具体参照样例。

Sample Input

12 24

Sample Output

36

B题

#include

using namespace std;

class Lingjian

{

public:

Lingjian(int Weights) { AllWeights = AllWeights + Weights; } ~Lingjian(){ Weights = 0;}

static int GetWeights() { return Weights; }

static int AllWeights;

static int Weights;

};

int Lingjian::AllWeights=0;

int Lingjian::Weights=0;

int main()

{

int a,b;

cin>>a>>b;

Lingjian A(a);

Lingjian B(b);

cout<

return 0;

}

C.友元函数

Time Limit: 1000 MS Memory Limit: 32768 K

Total Submit: 400 (230 users) Total Accepted: 98 (97 users) Special Judge: No

Description

定义狮子Lion与老虎Tiger两个类,二者都有weight私有整型属性,定义二者的一个友元函数totalWeight(),计算二者的重量和。设计程序,定义狮子与老虎两个对象之后,调用totalWeight(),计算二者的重量和,然后输出。其中狮子与老虎的Weight是在main()函数中从文件读数赋值。(15分)

注意:必须按照描述要求书写代码,否则不给分。

Input

包含一个整数。

Output

重量和输出一行,是重量和的值。具体参照样例。Sample Input

240 280

Sample Output

520

C题

#include

using namespace std;

class Tiger;

class Lion

{

public:

Lion(int L):weight(L) {}

friend int totalWeight(Lion &aLion, Tiger &aTiger); private:

int weight;

};

class Tiger

{

public:

Tiger(int T):weight(T) {}

friend int totalWeight(Lion &aLion, Tiger &aTiger); private:

int weight;

};

int totalWeight(Lion &aLion, Tiger &aTiger)

{

return aLion.weight+aTiger.weight;

}

int main()

{

int w1, w2;

cin>>w1>>w2;

Lion L(w1);

Tiger T(w2);

cout<

D.用指针访问二维数组

Time Limit: 1000 MS Memory Limit: 32768 K

Total Submit: 161 (115 users) Total Accepted: 39 (38 users) Special Judge: No

Description

定义一个3x3的二维数组,从文件中读入数据。设计一个函数名为average,该函数的第一个参数是二维数组,第二个参数是行数,功能为对整个二维数组求平均值,返回值为最后的平均值,要求用以指针形式访问数组,不能使用下标形式(如a[1][2])。在主函数main中调用average求平均值,输出数组的平均值。(15分)

注意:必须按照描述要求书写代码,否则扣分或者不给分。

Input

输入有三行,每行有3个浮点数,浮点数范围[-200,200]

Output

输出数组的平均值。具体参照样例。

输出不要求精度控制,使用C++默认的输出即可。如将浮点数f输出到一行,使用cout << f <

Sample Input

123.1 123.3 124.5 124 135 145 122 133 213

Sample Output

138.1

D题

#include

using namespace std;

float average(float a[3][3] , int i)

{

float sum = 0;

for(int i = 0; i < 3; i++)

for(int j = 0 ; j < 3; j++)

{

sum += *(*(a+i)+j);

}

* * return sum/9;

}

int main()

{

float average(float a[3][3], int i);

float a[3][3];

float aver;

for(int i = 0; i < 3; i++)

for(int j = 0 ; j < 3; j++)

cin>>*(*(a+i)+j);;

aver = average(a,3);

cout<

}

E.派生类

Time Limit: 1000 MS Memory Limit: 32768 K

Total Submit: 164 (119 users) Total Accepted: 27 (25 users) Special Judge: No

Description

设计一个名为Point的点类和一个名为Rectangle的矩形类。点类的属性是整型的x和y坐标。矩形类是从点类派生的,点坐标为矩形的左下角的点坐标,并增加两个整型属性,分别是长(X方向)和高(Y方向)。同时还有获取(并计算)右上角点的成员函数getRightUpPoint()。要求设计实现这两个类,并且矩形类还要实现带参数的构造函数,以及拷贝构造函数。从文件读取数据构造一个矩形对象R1,使用拷贝构造函数构造矩形对象变量名为R2,进而调用R2的getRightUpPoint()得到右上角坐标,然后输出该坐标值。写出完整的C++测试派生类构造函数、拷贝构造函数的程序代码。(20分)

注意:必须按照描述要求书写代码,否则不给分。

Input

输入有两行,第一行两个整数x1,y1表示矩形的左上角坐标(x1,y1);第二行两个整数lenght,width表示矩形的长(X方向)和高(Y方向)

Output

输出有一行,是调用R2的getRightUpPoint()而得到的点的坐标值。

Sample Input

12 13

34 45

Sample Output

46 58

E题

#include

using namespace std;

class Point

{

public:

void initPoint(int x=0, int y=0){this->x=x; this->y=y; } int getX() const {return x; }

int getY() const {return y; }

private:

float x, y;

};

class Rectangle:public Point

{

public:

void initRectangle(int x, int y, int w, int h) {

initPoint(x, y);

this->w=w;

this->h=h;

}

int getH() const {return h; }

int getW() const {return w; }

void getRightUpPoint(int *xx, int *yy)

{

*xx=getX()+getW();

*yy=getY()+getH();

}

private:

int w, h;

};

int main()

{

int x, y, lenght, width;

int xx,yy;

cin>>x>>y>>lenght>>width;

Rectangle R1;

R1.initRectangle(x, y, lenght, width);

Rectangle R2(R1);

R2.getRightUpPoint(&xx, &yy);

cout<

return 0;

}

相关文档