C++编程考题

C++编程考题:

Date: November 3, 2022

  • Concise summary:期末复习的一些C++编程题

第四章:

第二次上机第一题

设计一个长方体类Box,它能计算并输出长方体的体积和表面积。

(1) 定义构造函数完成长方体的初始化

(2) 求长方体的体积;

(3) 求长方体的表面积;

(4) 输出长方体的相关信息。

请写出完整的程序(可以复制粘贴整个程序作为答案,也可以上传截图和运行结果)。

Code:完成

#include<iostream>
using namespace std;

class Box {
public:
	//注意:这里如果有参构造函数包含了默认值,就不需要再补默认构造函数了,否则会造成多个默认构造函数的情况,会报错
	Box(int l = 1, int w = 1, int h = 1) {
		this->l = l;
		this->w = w;
		this->h = h;
	}

	double v() {
		double v;
		v = l * w * h;
		return v;
	}

	double s() {
		double s;
		s = 2 * (1 * w + 1 * h + w * h);
		return s;
	}

	void inf() {
		cout << "长方体的长宽高分别是: " << l << ", " << w << ", " << h << endl;
		cout << "长方体的体积和表面积分别是:" << v() << ", " << s() << endl;
	}

private:
	double l, w, h;
};

int main() {

	Box b(1, 2, 3);
	b.inf();

	return 0;
}

第二次上机第二题

需要求3个三角形的面积,请编写一个面向对象的程序。数据成员包括三角形的三边长a、b、 c。要求用成员函数实现以下功能:

(1) 定义构造函数完成三角形的初始化;

(2) 求三角形的周长;

(3) 求三角形的面积;

(4) 输出三角形信息。

Code:

#include<iostream>
#include<math.h>
using namespace std;

class triangle {
public:

	triangle(double a = 3, double b = 4, double c = 5) {
		this->a = a;
		this->b = b;
		this->c = c;
	}

	double perimeter() {
		double p = a + b + c;
		return p;
	}

	double area() {
		double p1 = 0.5 * (a + b + c);
		double s = sqrt(p1 * (p1 - a) * (p1 - b) * (p1 - c));
		return s;
	}

	void inf() {
		cout << "三角形的三条边长分别为:" << a << ", "<< b << ", "<< c << endl;
		cout << "三角形的周长和面积分别为:" << perimeter() << " ," << area() << endl;
	}

private:
	double a, b, c;
};

int main() {
	triangle t0, t1(6, 8, 10), t2(5, 12, 13);
	t0.inf();
	t1.inf();
	t2.inf();

	return 0;
}




第六章:

第五次上机作业一:

先定义“高度”类Hight和“圆”类Circle,再由Hight和Circle多重派生出“圆柱体”类Cylinder。在主函数中定义一个圆柱体对象,调用成员函数求出圆柱体的体积和表面积。

(类中的数据成员不能定义为public。)

int main( ){
Cylinder s(5,3);    //5是圆柱体底圆半径,3是圆柱体高度
s.tiji();           //此行输出圆柱体体积
s.biaomianji();     //此行输出圆柱体表面积
return 0;
}

请写出完整的程序。

Code:

#include<iostream>
using namespace std;

class Height {
public:
	Height(double h = 1) {
		this->h = h;
	}
	void setH(double h) {
		this->h = h;
	}
	double getH() {
		return h;
	}
private:
	double h;
};

class Circle{
public:
	Circle(double r = 1) {
		this->r = r;
	}
	void setR(double r) {
		this->r = r;
	}
	double getR(){
		return r;
	}
private:
	double r;
};

class Cylinder :public Height, public Circle {
public:
	Cylinder(double r, double h): Circle(r), Height(h){}
	double tiji() {
		double V;
		V = 3.14 * getR() * getR() * getH();
		cout << "圆柱体的体积是:" << V << endl;
		return V;
	}

	double biaomianji() {
		double S;
		S = 2 * 3.14 * getR() * getR() + 2 * 3.14 * getR() * getH();
		cout << "圆柱体的表面积是:" << S << endl;
		return S;
	}
};

int main(){
	Cylinder s(5, 3);    //5是圆柱体底圆半径,3是圆柱体高度
	s.tiji();           //此行输出圆柱体体积
	s.biaomianji();     //此行输出圆柱体表面积
	return 0;
}

第五次上机作业二:

用先定义“高度”类Hight和“长方形”类Rectangle,再由Hight和Rectangle多重派生出“长方体”类Cuboid。在主函数中定义一个长方体对象,调用成员函数求出长方体的体积和表面积。

(类中的数据成员不能定义为public。)

int main(){
Cuboid  c(2,5,3);    //2、5、3分别表示长方体的长、宽和高
c.tiji( );           //此行输出长方体体体积
c.biaomianji( );     //此行输出长方体表面积
return 0;
}

请写出完整的程序。

Code:

#include<iostream>
using namespace std;

class Height {
public:
	Height(float h = 1) {
		this->h = h;
	}

	float getH() {
		return h;
	}
private:
	float h;
};

class Rectangle {
public:
	Rectangle(float l = 1, float w = 1) {
		this->l = l;
		this->w = w;
	}

	float getL() {
		return l;
	}

	float getW() {
		return w;
	}

private:
	float l;
	float w;
};

class Cuboid :public Height, public Rectangle {
public:
	Cuboid(float h, float l, float w) :Height(h), Rectangle(l, w) {}

	void tiji() {
		float L, W, H, V;
		L = getL();
		W = getW();
		H = getH();
		V = L * W * H;
		cout << "体积为" << V << endl;
	}

	void biaomianji() {
		float L, W, H, S;
		L = getL();
		W = getW();
		H = getH();
		S = 2 * (L * W + L * H + W * H);
		cout << "表面积为" << S << endl;
	}
};

int main() {
	Cuboid  c(2, 5, 3);    //2、5、3分别表示长方体的长、宽和高
	c.tiji();           //此行输出长方体体体积
	c.biaomianji();     //此行输出长方体表面积
	return 0;
}

第五次上机作业三:

先定义的“高度”类Hight和“圆”类Circle,再由Hight和Circle多重派生出“圆锥体”类Cone。在主函数中定义一个圆锥体类的对象,调用成员函数求出圆锥体的的体积和底圆面积。

(类中的数据成员不能定义为public。)

int  main( ){
Cone   s(5,3);
s.tiji( );//此行输出圆锥体的体积
s.diyuanmianji( );//此行输出圆锥体的底圆面积
return 0;
}

请写出完整的程序。

Code:

#include<iostream>
using namespace std;

class Height {
public:
	Height(double h = 1) {
		this->h = h;
	}

	double getH() {
		return h;
	}

private:
	double h;
};

class Circle {
public:
	Circle(double r = 1) {
		this->r = r;
	}

	double getR() {
		return r;
	}

private:
	double r;
};

class Cone :public Height, public Circle {
public:
	Cone(double x, double y) :Height(x), Circle(y) {}

	void tiji() {
		double R, H, V;
		R = getR();
		H = getH();
		V = (3.14 * R * R * H) / 3;
		cout << "体积为" << V << endl;
	}

	void biaomianji() {
		double R, S;
		R = getR();
		S = 0.5 * (2 * 3.14 * R) * R;
		cout << "表面积为" << S << endl;
	}
};

int main() {
	Cone  c(1, 1);
	c.tiji();           //此行输圆锥体体积
	c.biaomianji();     //此行输出底圆面积
	return 0;
}

第五次上机作业四:

先定义一个点类Point,Point类有两个数据成员代表横坐标和纵坐标,再由点类Point派生出线段类Line,在主函数中定义一个线段类对象,调用成员函数求出改线段的长度和其中点坐标。

(类中的数据成员不能定义为public。)

int main(){
Line  s(0,0,0,4);    //两个点坐标分别是(0,0)(0,4)
s.distance( );           //此行输出线段s的长度。
s.ZDdata( );     //此行输出线段s的中点坐标。
return 0;
}

请写出完整的程序。

Code:

#include<iostream>
#include<math.h>
using namespace std;

class Point {
public:
	Point(double x = 0, double y = 0) {
		this->x = x;
		this->y = y;
	}

	double getX() {
		return x;
	}

	double getY() {
		return y;
	}

private:
	double x;
	double y;
};

class Line :public Point {
public:
	Line(double x1, double y1, double x2, double y2) :p1(x1, y1), p2(x2, y2) {}

	void distance() {
		double l = sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
		cout << "线段长度为:" << l << endl;
	}

	void ZDdata() {

		double x3 = 0.5 * (p1.getX() + p2.getX());
		double y3 = 0.5 * (p1.getY() + p2.getY());

		cout << "线段中点为:(" << x3 << ", " << y3 << ")" << endl;
	}

private:
	Point p1, p2;
};

int main() {
	Line  s(0, 0, 0, 4);    //两个点坐标分别是(0,0)(0,4)
	s.distance();           //此行输出线段s的长度。
	s.ZDdata();     //此行输出线段s的中点坐标。
	return 0;
}



  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值