c++打卡第二天

一、十进制转化为二进制

1、问题描述

   输入一个十进制的数,将其转化为二进制。

2、设计思路:

 ①、首先输入一个十进制的数字。

 ②、十进制数每除余2所得余数记录下来 同时这个数除以二 最终得到的余数是先低位后高位的 我们把它们有序排列 最终得到此十进制数转化为的二进制数。

3.流程图

4、代码实现

#include<iostream>
using namespace std;
int a[100];
int main()
{
    int n;
    cin>>n;
    int i=0;
    while(n>0)
    {
        a[i++]=n%2;
        n=n/2;
    }
    for(int j=i-1;j>=0;j--)
    {
        cout<<a[j]<<" ";
    }
    return 0;
 } 

二、作业题

题目描述:以点类Point为基类公有派生圆类Circle,并以圆类Circle为基类公有派生球类Sphere,main(void)函数完成对其的测试。

Point类的数据成员包括:
①私有数据成员:X坐标x(double型),Y坐标y(double型)。
Point类成员函数包括:
①有参构造函数Point(double, double)和拷贝构造函数Point(const Point &),其中有参构造函数参数默认值为0,输出信息“Point Constructor run”,拷贝构造函数输出信息“Point CopyConstructor run”
②析构函数,析构函数输出信息“Point Destructor run”
③公有函数成员:void setX(double)和double getX() const分别返回和设置X坐标
④公有函数成员:void setY(double)和double getY() const分别返回和设置Y坐标
⑤公有成员函数void show() const用于显示点的坐标信息,显示格式为:(x,y)
⑥公有成员函数double area() const用于计算点的面积,点的面积为0

公有派生圆类Circle以点类Point为基类,相较于点类Point,Circle类的结构说明如下:
Circle类的数据成员包括:
①私有数据成员:X坐标x继承自Point类,Y坐标y继承自Point类。
②私有数据成员:半径radius(double型)
③静态数据常量PI(double型),其值为3.14159
Circle类成员函数包括:
①定义有参构造函数Circle(double, double, double)和拷贝构造函数Circle(Circle &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Circle Constructor run”,拷贝构造函数输出信息“Circle CopyConstructor run”
②定义析构函数,析构函数输出信息“Circle Destructor run”
③定义公有函数成员:void setRadius(double)和double getRadius() const分别返回和设置radius
④定义公有成员函数double circumference() const用于计算圆的周长
⑤重载double area() const用于计算圆的面积
⑥重载void show() const用于显示圆的信息,显示格式为:
(圆心X坐标,圆心Y坐标),Radius=半径

 

公有派生球类Sphere以圆类Circle为基类,Sphere类的结构说明如下:
Sphere类的数据成员包括:
①私有数据成员:X坐标x继承自Circle类,Y坐标y继承自Circle类,半径radius继承自Circle类。
②静态数据常量PI继承自Circle类。
Sphere类成员函数包括:
①定义有参构造函数Sphere(double, double, double)和拷贝构造函数Sphere(Sphere &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Sphere Constructor run”,拷贝构造函数输出信息“Sphere CopyConstructor run”
②定义析构函数,析构函数输出信息“Sphere Destructor run”
③定义公有成员函数double volume() const用于计算球的体积
④重载double area() const用于计算球的表面积

代码实现:

#include <iostream>
using namespace std;
class Point {
    protected:
        double x;
        double y;
    public:
        Point(double xv=0,double yv=0);//有参构造
        Point(const Point &p);         //拷贝构造
        ~Point();                      //析构函数
        void show() const;             //显示Point信息
        double area()const;            //面积=0
        void setX(double xv);          //设置X坐标
        void setY(double yv);          //设置Y坐标
        double getX() const;           //获取X坐标
        double getY() const;           //获取Y坐标
};
//有参构造
Point::Point(double xv,double yv) {
    x=xv;
    y=yv;
    cout<<"Point Constructor run"<<endl;
}
//拷贝构造
Point::Point(const Point &p) {
    x=p.x;
    y=p.y;
    cout<<"Point CopyConstructor run"<<endl;
}
//析构函数
Point::~Point() {
    cout<<"Point Destructor run"<<endl;
}
//显示Point
void Point::show() const {
    cout<<"("<<x<<","<<y<<")";
}
//设置X坐标
void Point::setX(double xv) {
    x=xv;
}
//设置Y坐标
void Point::setY(double yv) {
    y=yv;
}
//面积函数
double Point::area() const {
    return 0;
}
//获取X坐标
double Point::getX() const {
    return x;
}
//获取Y坐标
double Point::getY() const {
    return y;
}
#define PI 3.14159
class Circle:public Point {
    public:
        double radius;
        Circle(double a=0,double b=0,double c=0):Point(a,b) {
            radius=c;
            cout<<"Circle Constructor run"<<endl;
        }
        Circle(Circle &p):Point(p) {
            radius=p.radius;
            cout<<"Circle CopyConstructor run"<<endl;
        }
        ~Circle() {
            cout<<"Circle Destructor run"<<endl;
        }
        void setRadius(double c) {
            radius=c;
        }
        double getRadius() const { //分别返回和设置radius
            return radius;
        }
        double circumference() const { //用于计算圆的周长
            return 2*PI*radius;
        }
        double area() const { //用于计算圆的面积
            return PI*radius*radius;
        }
        void show() const {
            cout<<"("<<x<<","<<y<<"),Radius="<<radius;
        }
};
class Sphere:public Circle {
    public:
        Sphere(double a, double b, double c):Circle(a,b,c) {
            cout<<"Sphere Constructor run"<<endl;
        }
        Sphere(Sphere &p):Circle(p) {
            radius=p.radius;
            cout<<"Sphere CopyConstructor run"<<endl;
        }
        ~Sphere() {
            cout<<"Sphere Destructor run"<<endl;
        }
        double volume() const { //用于计算球的体积
            double t=area();
            double l=circumference();
            double m=2*t*l;
            double n=3*PI;
            double v=m/n;
            return v/4;
        }
        double area() const {
            double t=circumference();
            return (t*t)/PI;
        }
};
int main(void) {
    double  r;
    cin>>r;
    Sphere s1(1,2,4),s2(s1);
    s1.show();
    cout<<endl<<"Area="<<s1.area()<<endl<<"Volume="<<s1.volume()<<endl;
    s2.setRadius(r);
    s2.Circle::show();
    cout<<endl<<"Area="<<s2.Circle::area()<<endl<<"Circumference="<<s2.Circle::circumference()<<endl;
    return 0;
}

输入样例:6.0

输出结果:

Point Constructor run
Circle Constructor run
Sphere Constructor run
Point CopyConstructor run
Circle CopyConstructor run
Sphere CopyConstructor run
(1,2),Radius=4
Area=201.062
Volume=268.082
(1,2),Radius=6
Area=113.097
Circumference=37.6991
Sphere Destructor run
Circle Destructor run
Point Destructor run
Sphere Destructor run
Circle Destructor run
Point Destructor run

今天完成实验二,20223.4.11打卡。

 

posted @ 2023-04-11 20:54  七安。  阅读(25)  评论(0)    收藏  举报