C++的第五个实验

2023-05-16

又是两周一次的C++实验时间,最近事可真是太多了


问题一

1、检查下面的程序,找出其中的错误,并改正之。然后上机调试,使之能正常运行。

题目一

#include <iostream>
using namespace std;
class A
{
public:
        void A(int i=0){m=i;}
        void show(){cout<<m;}
        void ~A(){}
private:
        int m;
};
int main()
{   
	A a(5);
	a.m+=10;
	a.show();
	return 0;
}

我的方案

#include <iostream>
using namespace std;

class A
{
public:
    A(int i = 0) { m = i; };
    void show() { cout << m; }
	~A(){};
    int m;
private:
   
};

int main()
{
    A a(5);
    a.m += 10;
    a.show();
    return 0;
}

效果如下
在这里插入图片描述
题目二

class X
{ private:
    int a=0;
    int &b;
    const int c;
    void setA(int i){a=i;}
    X(int i){ a=i;}
public:
    int X(){ a=b=0;}
    X(int i, int j, int k){ a=i; b=j; c=k; }
    setC(int k) const { c=c+k;}
};
int main()
{
    X x1;
    X x2(2) ;
    X x3(1,2,3) ;
    x1.setA(3) ;
    return 0 ;
}

想不出来

#include <iostream>
using namespace std;


class X
{
private:
    int a = 0;
    int& b;
    const int c;
    void setA(int i) { a = i; }
    X(int i) : b(b),c() 
    { a = i; }
public:
    X():b(a),c()
    { a = 0; }
    X(int i, int j, int k):b(j),c(k)
    { a = i; }
};

int main()
{
    X x1;
    X x3(1, 2, 3);
    return 0;
}

组长给了一个解法

#include <iostream>
using namespace std;

class X
{
    friend int main();
private:
    int a = 88;
    int& b;
    const int c;
    void setA(int i) { a = i + 1; }
    X(int i) :b(b), c(0) { a = i; }
public:
    X() :b(a), c(22) { a = 0; }
    X(int i, int j, int k) :b(j), c(k) { a = a - i; }
    void setC(int k) const {
        int* p;
        p = (int*)&c;
        *p += k;
    }
};
int main()
{
    X x1;
    X x2(2);
    X x3(1, 2, 3);
    x1.setA(3);
    x1.setC(88);
    std::cout << x2.a << std::endl;
    std::cout << &x3.b << std::endl;
    std::cout << x3.b << std::endl;

    return 0;
}

问题二

2、分析下面的程序,写出其运行时的输出结果。上机运行该程序,观察运行结果是否与你的分析相同。如有不同,试分析原因。

题目一

#include <iostream>
using namespace std;
class A {
public:
	A();
	A(int i, int j);
	void print();
private:
	int a, b;
};
A::A()
{
	a = b = 0;
	cout << "Default constructor called.\n";
}
A::A(int i, int j)
{
	a = i;
	b = j;
	cout << "Constructor called.\n";
}
void A::print()
{
	cout << "a = " << a << ", b = " << b << endl;
}
void main()
{
	A m, n(4, 8);
	m.print();
	n.print();
}

效果如下
在这里插入图片描述

题目二

#include <iostream>
using namespace std;
class Date
{public:
Date(int,int,int);
Date(int,int);
Date(int);
Date( );
void display( );
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y){ }
Date::Date(int m,int d):month(m),day(d)  {year=2005;} 
Date::Date(int m):month(m)
{ day=1;
year=2005;
}
Date::Date( )
{ month=1;
day=1;
year=2005;
}
void Date::display( )
{cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main( )
{  Date d1(10,13,2005);
Date d2(12,30);
Date d3(10);
Date d4;
d1.display( );
d2.display( );
d3.display( );
d4.display( );
return 0;
}

效果如下

在这里插入图片描述

题目三

#include <iostream>
using namespace std;
class test
{
public:
	test();
	int getint() { return num; }
	float getfloat() { return fl; }
	~test();
private:
	int num;
	float fl;
};
test::test()
{
	cout << "Initalizing default" << endl;
	num = 0;
	fl = 0.0;
}
test::~test()
{
	cout << "Destructor is active" << endl;
}
int main()
{
	test array[2];
	cout << array[1].getint() << "  " << array[1].getfloat() << endl;
	return 0;
}

效果如下
在这里插入图片描述

题目四

#include<iostream>
using namespace std;
#include<string>
class X
{
public:
	X(int x1, char* x2, float x3) :a(x1), c(x3)
	{
		b = new char[sizeof(x2) + 1];
		strcpy(b, x2);
	}
	X() :a(0), b("X::X()"), c(10) { }
	X(int x1, char* x2 = "X::X(....)", int x3 = 10) :a(x1), b(x2), c(x3) {}
	X(const X& other)
	{
		a = other.a;
		b = "X::X(const X &other)";
		c = other.c;
	}
	void print()
	{
		cout << "a=" << a << "\t" << "b=" << b << "\t" << "c=" << c << endl;
	}
private:
	int a;
	char* b;
	float c;
};
int main() {
	X* A = new X(4, "X::X(int,char,float)", 32);
	X B, C(10), D(B);
	A->print();
	B.print();
	C.print();
	D.print();
	return 0;
}

我的垃圾代码

#include<iostream>
using namespace std;
#include<string>
class X
{
public:
	X(int x1, const char* x2, float x3) :a(x1), c(x3)
	{
		b = new char[sizeof(x2) + 1];
		b = x2;
	}
	X() :a(0), b("X::X()"), c(10) { }
	X(int x1, const char* x2 = "X::X(....)", int x3 = 10) :a(x1), b(x2), c(x3) {}
	X(const X& other)
	{
		a = other.a;
		b = "X::X(const X &other)";
		c = other.c;
	}
	void print()
	{
		cout << "a=" << a << "\t" << "b=" << b << "\t" << "c=" << c << endl;
	}
private:
	int a;
	const char* b;
	float c;
};
int main() {
	X* A = new X(4, "X::X(int,char,float)", 32);
	X B, C(10), D(B);
	A->print();
	B.print();
	C.print();
	D.print();
	return 0;
}

效果如下

在这里插入图片描述

问题三

3、某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。设计并实现工资管理的类Salary,该类的形式如下:
class Salary
{public:
Salary(){初始化工资数据的各分项数据为0}
Salary(……) {初始化工资数据的各分项数据}
void setXX(double f){ XX=f; }
double getXX(){ return XX; }
double RealSalary(){ …… }//计算实发工资
……
Private:
Bouble Wage, Subsidy, Rent, WaterFee, ElecFee;
};
其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和getWage()。
实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee
编程完善该类的设计,并在主函数中测试该类的各成员函数。

/*某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。
设计并实现工资管理的类Salary,该类的形式如下:
class Salary
{
public:
    Salary() { 初始化工资数据的各分项数据为0 }
    Salary(……) { 初始化工资数据的各分项数据 }
    void setXX(double f) { XX = f; }
    double getXX() { return XX; }
    double RealSalary() { …… }//计算实发工资
    ……
        Private :
    Bouble Wage, Subsidy, Rent, WaterFee, ElecFee;
};
其中,成员函数setXX()用于设置工资的各分项数据,
成员函数getXX()用于获取工资的各分项数据,
XX代表Wage、Subsidy等数据成员,
如Wage对应的成员函数则为setWage()和getWage()。
实发工资 = Wage + Subsidy - Rent - WaterFee - ElecFee
编程完善该类的设计,并在主函数中测试该类的各成员函数。*/

#include<iostream>
using namespace std;
#include<string>
class Salary
{
public:
    Salary() {

        Subsidy = 0;//岗位津贴
        Rent = 0;//房租
        WaterFee = 0;//水费
        ElecFee = 0;//电费
        Wage = 0;//基本工资
    }
    Salary(double a,double b,double c,double d,double e) {
        Subsidy = a;//岗位津贴
        Rent = b;//房租
        WaterFee = c;//水费
        ElecFee = d;//电费
        Wage = e;//基本工资
    }
    void setSubsidy(double f) { 
    
        Subsidy = f;
    }
    void setRent(double f) { 
  
        Rent = f;
    }
    void setWaterFee(double f) { 
   
        WaterFee = f;
    }
    void setElecFee(double f) { 
 
        ElecFee = f;
    }
    void setWage(double f) { 

        Wage = f;
    }
    double getSubsidy() { 
        cout << "岗位津贴是多少:" ;
        cin >> Subsidy;
        return Subsidy;
    }
    double getRent() {
        cout << "房租是多少:" ;
        cin >> Rent;
        return Rent;
    }
    double getWaterFee() {
        cout << "水费是多少:" ;
        cin >> WaterFee;
        return WaterFee;
    }
    double getElecFee() {
        cout << "电费是多少:";
        cin >> ElecFee;
        return ElecFee;
    }
    double getWage() {
        cout << "基本工资是多少:" ;
        cin >> Wage;
        return Wage;
    }
    double RealSalary() { 
        cout << "RealSalary = " << Wage + Subsidy - Rent - WaterFee - ElecFee << endl;
        return 0;
    }//计算实发工资

private:
    
    double Subsidy;//岗位津贴
    double Rent;//房租
    double WaterFee;//水费
    double ElecFee;//电费
    double Wage;//基本工资
};

int main()
{
    Salary John;
    Salary();
    double a = John.getElecFee();
    double b = John.getRent();
    double c = John.getSubsidy();
    double d = John.getWage();
    double e = John.getWaterFee();
    Salary(a, b, c, d, e);
    John.RealSalary();
    John.setElecFee(a);
    John.setRent(b);
    John.setSubsidy(c);
    John.setWage(d);
    John.setWaterFee(e);
    John.RealSalary();  
}

效果如下

在这里插入图片描述

问题四

4、设计一个时钟类Clock。数据成员包括hour(小时)、minute(分钟)、second(秒)。要求用成员函数实现以下功能:
(1)创建具有指定时钟(小时、分钟、秒)的Clock对象,默认时钟为00:00:00。
(2)动态地设置时、分、秒。
(3)在屏幕上按“时:分:秒”的格式显示时钟。
(4)在主函数中测试该类。

/*设计一个时钟类Clock。
数据成员包括hour(小时)、minute(分钟)、second(秒)。
要求用成员函数实现以下功能:
(1)创建具有指定时钟(小时、分钟、秒)的Clock对象,默认时钟为00 : 00 : 00。
(2)动态地设置时、分、秒。
(3)在屏幕上按“时 : 分:秒”的格式显示时钟。
(4)在主函数中测试该类。*/

#include<iostream>
#include<iomanip>
#include<Windows.h>

using namespace std;

class Clock
{
public:
    Clock() {};
    void SetTime(int newH = 0, int newM = 0, int newS = 0);
    void ShowTime();
    void Run();          //Run()控制计时
private:
    int hour, minute, second;
};
void Clock::SetTime(int newH, int newM, int newS) //设置时间
{
    hour = newH;
    minute = newM;
    second = newS;
}

void Clock::ShowTime()        //显示时间,在显示时间前进行判断,如果时间设置不合适,则提示错误
{
    if (hour > 24 || hour < 0 || minute>60 || minute < 0 || second>60 || second < 0)
    {
        cout << "输入有误!" << endl;
        exit(0);
    }
    else
    {
        cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0')   //<<setw(2)<<setfill('0')设置域宽为2 不够的话用字符‘0’填充  
            << minute << ":" << setw(2) << setfill('0') << second << endl;
    }
}

void Clock::Run()  //实现计时功能
{

    while (1)
    {
        second += 1;
        if (second >= 60)
        {
            second -= 60;
            minute += 1;

        }
        if (minute >= 60)
        {
            minute -= 60;
            hour += 1;
        }
        if (hour >= 24)
        {
            hour -= 24;
        }
        system("cls");
        ShowTime();
        Sleep(1000);
    }
}
int main()
{
    Clock myClock;         //定义时钟类对象
    myClock.SetTime(23, 59, 55);
    myClock.ShowTime();
    myClock.Run();
    return 0;

}

效果如下

在这里插入图片描述

问题五

5、需要求3个三角形的体积,请编写一个基于对象的程序。数据成员包括三角形的三边长a、b、c。要求用成员函数实现以下功能:
(1) 定义构造函数完成三角形的初始化;
(2) 求三角形的周长;
(3) 求三角形的面积;
(4) 输出三角形信息。

/*需要求3个三角形的体积,请编写一个基于对象的程序。
数据成员包括三角形的三边长a、b、c。
要求用成员函数实现以下功能:
(1) 定义构造函数完成三角形的初始化;
(2) 求三角形的周长;
(3) 求三角形的面积;
(4) 输出三角形信息。*/

//面向对象的程序设计求三角形面积及周长
#include <iostream>
#include <Cmath>
#include <cstdlib>
using namespace std;
class Ctriangle  //定义三角形类
{
private:
	double S1, S2, S3;//三角形的三条边
	double l;
	double a;
public:
	Ctriangle(int x = 0, int y = 0, int z = 0)//边长初始化
	{
		this->S1 = x;
		this->S2 = y;
		this->S3 = z;
	}
	double Girth(); //三角形周长
	bool Istriangle(); //判断是否是三角形
	double Area(); //三角形面积
	void init_triangle();//输入三角形边长
	void print_tri();
};

bool Ctriangle::Istriangle() //判断是否是三角形
{
	if ((S1 + S2) > S3 && (S2 + S3) > S1 && (S1 + S3) > S2)//使用两边之和大于第三边判断
	{
		return true;
	}
	else
	{
		cout << "三边不能组成三角形" << endl;
		return false;
	}
}

void Ctriangle::init_triangle()                                 //输入三角形边长
{
	cout << "请输入三边长:" << endl;
	cin >> S1 >> S2 >> S3;
}
void Ctriangle::print_tri ()                               //输入三角形边长
{
	cout << "这个三角形三边长为:"<< S1<<" " << S2<<" " << S3 << endl;
	cout << "这个三角形周长面积为:" << l << " " << a << endl;
}

double Ctriangle::Girth()                                       //求周长
{
	l = S1 + S2 + S3;
	cout << "周长为:" << l<< endl;
	return 0;
}

double Ctriangle::Area()                                        //求面积
{
	double x;
	x = (S1 + S2 + S3) / 2;
	a = sqrt(x * (x - S1) * (x - S2) * (x - S3));
	cout << "面积为:" << a << endl;
	return 0;//使用海伦公式
}

int main()
{
	Ctriangle t;
	t.init_triangle();
	if (t.Istriangle())
	{
		t.Girth();
		t.Area();
		t.print_tri();
	}

	return 0;

}


效果如下
在这里插入图片描述
在这里插入图片描述

问题六

建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号、成绩。

#include <iostream>
using namespace std;
class student
{
public:
	student(int n, string na, int m) : num(n), name(na), mark(m) {}
	int num;
	string name;
	int mark;
};
void max(student* p, int n)
{
	student* pt, t(0, "", 0);
	int max = p->mark;
	for (pt = p; pt < p + n; pt++)
	{
		if (pt->mark > max)
		{
			max = pt->mark;
			t = *pt;
		}
	}
	cout << t.mark;
}
int main()
{
	student stu[5] = {
	student(1001, "Mark", 57),
	student(1002, "Tony", 76),
	student(1003, "Tim", 80),
	student(1004, "Tom", 77),
	student(1005, "Hork", 81) };
	max(stu, 5);
	return 0;
}


效果如下

在这里插入图片描述

问题七

7.设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。并可以输出4个坐标值和面积。使用测试程序验证程序。

#include<iostream>
#include<cmath>
using namespace std;
class Point;
class Rectangle
{
private:
	double x1, y1, x2, y2, s;
public:
	Rectangle();
	void peak1(Point&);
	void peak2(Point&);
	void area();
};
class Point
{
private:
	double x1, y1;
public:
	Point();
	Point(double m_x1, double m_y1) :x1(m_x1), y1(m_y1) {}
	friend void Rectangle::peak1(Point&);
	friend void Rectangle::peak2(Point&);
};
Point::Point()
{
	x1 = y1 = 0;
}
Rectangle::Rectangle()
{
	s = x1 = x2 = y1 = y2 = 0;
}
void Rectangle::peak1(Point& t1)
{
	x1 = t1.x1;
	y1 = t1.y1;
}
void Rectangle::peak2(Point& t2)
{
	x2 = t2.x1;
	y2 = t2.y1;
	cout << "该矩形的四个顶点坐标是:" << endl;
	cout << "(" << x1 << "," << y1 << ")";
	cout << "、 (" << x2 << "," << y2 << ")";
	cout << "、 (" << x1 << "," << y2 << ")";
	cout << "、 (" << x2 << "," << y1 << ")" << endl;

}

void Rectangle::area()
{
	s = fabs(x2 - x1) * fabs(y2 - y1);
	cout << "矩形面积是:" << s << endl;
}
void main()
{
	double x1, y1, x2, y2;
	cout << "请输入两个坐标:";
	cin >> x1 >> y1 >> x2 >> y2;
	Point a(x1, y1);
	Point b(x2, y2);
	Rectangle c;
	c.peak1(a);
	c.peak2(b);
	c.area();
}

效果如下

在这里插入图片描述

问题八

8、下面是一个整型数组类intArray的声明,请给出该类所有数据成员的类外定义。
class intArray
{public:
intArray(int size);//构造函数
intArray(const intArray &x);//复制构造函数
~intArray();//析构函数
bool Set(int i, int elem);//设置第i个数组元素的值,设置成功返回true,失败返回false
bool Get(int i, int &elem); //获取第i个数组元素的值,获取成功返回true,失败返回false
int Length( ) const;//获取数组的长度
void ReSize ( int size ); //重置数组
void Print();//输出数组
private:
int *element; //指向动态数组的指针
int arraysize; //数组的当前长度
};

#include <iostream>
#include<string>
using namespace std;
class intArray
{
    friend istream& operator>>(istream& cin, intArray&);//数组的整体输入
    friend ostream& operator<<(ostream& cout, intArray&);//数组的整体输出
public:
    intArray() {}
    intArray(int size);//构造函数
    intArray(const intArray& x);//复制构造函数
    ~intArray();//析构函数
    bool Set(int i, int elem)//设置第i个数组元素的值,设置成功返回true,失败返回false
    {
        if (i >= 0 && i < this->arraysize)
        {
            this->element[i] = elem;
            return true;
        }
        else
        {
            return false;
        }
    }
    int Get(int i)//获取第i个数组元素的值
    {
        if (i > 0 && i < this->arraysize)
        {
            return this->element[i];
        }
    }
    int Length() {//获取数组长度
        return arraysize;
    }

    void ReSize(int size);//重置数组的长度
    intArray& operator=(const intArray& other);//赋值运算符“=”重载函数
    intArray operator+(const intArray& other);//加运算符“+”重载函数
    intArray operator-(const intArray& other);//减运算符“-”重载函数

private:
    int* element;//指向动态数组的指针
    int arraysize;//数组的当前长度
};

intArray::~intArray() {
    delete element;
    element = NULL;
}
intArray::intArray(const intArray& x) {
    this->arraysize = x.arraysize;
    this->element = new int[arraysize];
    for (int i = 0; i < arraysize; i++)
    {
        this->element[i] = x.element[i];
    }
}
intArray::intArray(int size) {
    this->arraysize = size;
    this->element = new int[size];
}

/*
    对数组对象进行输入
*/
istream& operator>>(istream& cin, intArray& arr) {
    int temp = 0;
    for (int i = 0; i < arr.arraysize; i++)
    {
        cin >> temp;
        arr.element[i] = temp;
    }
    return cin;
}
/*
    对数组对象进行输出
*/
ostream& operator<<(ostream& cout, intArray& arr) {
    for (int i = 0; i < arr.arraysize; i++)
    {
        cout << arr.element[i] << endl;
    }
    return cout;
}
intArray& intArray::operator=(const intArray& other)//赋值运算符“=”重载函数
{
    if (this->element != NULL)
    {
        delete this->element;
        this->element = NULL;
    }
    this->arraysize = other.arraysize;
    this->element = new int[arraysize];
    for (int i = 0; i < arraysize; i++)
    {
        this->element[i] = other.element[i];
    }
    return *this;
}
intArray intArray:: operator+(const intArray& other)//加运算符“+”重载函数
{
    intArray temp(this->arraysize);
    for (int i = 0; i < this->arraysize; i++)
    {
        temp.element[i] = this->element[i] + other.element[i];
    }
    return temp;
}
intArray intArray:: operator-(const intArray& other)//减运算符“-”重载函数
{
    intArray temp(this->arraysize);
    for (int i = 0; i < this->arraysize; i++)
    {
        temp.element[i] = this->element[i] - other.element[i];
    }
    return temp;
}
void intArray::ReSize(int size) {
    this->arraysize = size;
    if (this->element != NULL)
    {
        delete this->element;
    }
    this->element = new int[size];
}
intArray& testA() {
    int size = 0;
    cout << "请输入要构造的数组长度:" << endl;
    cin >> size;
    intArray* a = new intArray(size);
    cout << "请输入" << size << "个数字来为数组对象a初始化:" << endl;
    cin >> *a;
    cout << "=================打印数组对象a===============" << endl;
    cout << *a;
    return *a;
}
intArray& testB(intArray& a) {
    //拷贝构造数组b
    intArray* b = new intArray(a);
    int size = a.Length();//获取数组长度
    cout << "===============打印数组对象b=================" << endl;
    cout << *b << endl;
    cout << "==========打印数组对象b下标为奇数的值==========" << endl;
    for (int i = 1; i < size; i += 2)
    {
        cout << (*b).Get(i) << endl;
    }
    cout << "=======将奇数下标的值翻倍,再打印数组对象b======" << endl;
    for (int i = 1; i < size; i += 2)
    {
        (*b).Set(i, (*b).Get(i) * 2);
    }
    cout << *b << endl;
    return *b;
}
intArray& testC(intArray& a) {
    //构造数组对象c
    intArray* c = new intArray(5);
    for (int i = 0; i < 5; i++)
    {
        (*c).Set(i, 1);
    }
    cout << "===============打印数组对象c=================" << endl;
    cout << *c << endl;
    (*c).ReSize(10);
    (*c) = a;
    cout << "===========打印赋值操作后的数组对象c===========" << endl;
    cout << *c << endl;
    return *c;
}
void testD(intArray& b, intArray& c) {
    intArray d = b + c;
    intArray e = b - c;
    cout << "================打印数组对象d=================" << endl;
    cout << d << endl;
    cout << "================打印数组对象e================" << endl;
    cout << e << endl;
}
void test() {
    cout << "*************问题1解答*************" << endl << endl;
    intArray a = testA();
    cout << "*************问题2解答*************" << endl << endl;
    intArray b = testB(a);
    cout << "*************问题3解答*************" << endl << endl;
    intArray c = testC(a);
    cout << "*************问题4解答*************" << endl << endl;
    testD(b, c);
}
int main()
{
    test();
    system("pause");
    return 0;
}

效果如下

在这里插入图片描述

问题九

#include <iostream>
using namespace std;
class complex
{
private:
	double sb, xb;
public:
	complex(double a = 0, double b = 0)
	{
		sb = a; xb = b;
	}
	friend complex add(complex& x, complex& y);
	void Show()
	{
		cout << "(" << sb << "," << xb << ")" << endl;
	}
};
complex add(complex& x, complex& y)
{
	complex z;
	z.sb = y.sb + x.sb;
	z.xb = y.xb + x.xb;
	return z;
}

int main()     //主函数
{
	complex z1(1.5, 2.8), z2(-2.3, 3.4), z3;  //声明复数类的对象
	z3 = add(z1, z2);//友元函数调用
	cout << "z3=";
	z3.Show();
	return 0;
}

效果如下

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++的第五个实验 的相关文章

  • mvvm是什么?

    1 总结 一句话总结 xff1a vm层 xff08 视图模型层 xff09 通过接口从后台m层 xff08 model层 xff09 请求数据 xff0c vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 xff
  • 汉诺塔问题(C语言实现)

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • ubuntu 16.04版本安装docker以及创建docker容器

    一 简介 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c 也可以实现虚拟化 容器是完全使用沙箱机制 xff0c
  • 字符串操作函数strstr

    目录 一 strstr函数介绍 二 strstr函数的模拟 三 代码实现 一 strstr函数介绍 在编写程序的过程中 xff0c 我们不可避免地会调用字符串操作函数 xff0c 今天要介绍的字符串操作函数是strstr函数 strstr函
  • 【无标题】前端工程师面试题手册-有点长但是很有用

    不是原作者 想想要获取更多前端开发相关学习资料 xff0c 请加微信1124692领取 前端工程师面试题手册 目录 1 前端基础 11 1 1 HTTP HTML 浏览器
  • 超详细的VMware虚拟机安装Linux图文教程保姆级

    目录 一 下载VMware 二 安装VMware 三 下载Linux 四 安装Linux 五 设置本地机与虚拟机之间的数据传输 xff08 复制 粘贴等操作 xff09 一 下载VMware VMware官网有两个版本 xff0c 分别是
  • 仿牛客技术博客项目常见问题及解答(三)

    书接上回 xff1a 仿牛客技术博客项目常见问题及解答 xff08 二 xff09 李孛欢的博客 CSDN博客 13 项目中的kafka是怎么用的 xff1f kafka入门 Apache Kafka是一个分布式流平台 一个分布式的流平台应
  • [Java] 继承 和 多态(学习总结)

    目录 继承 一 继承主要表示概念层上的 is a 的关系 二 什么是继承 三 语法 四 继承方式 xff1a 五 访问权限 六 构造方法 七 父类的属性和方法的访问 八 重载和重写 xff08 前提是子类是有权限的 xff09 九 执行顺序
  • 第七章-X86汇编语言从实模式到保护模式

    第七章 比高斯更快的计算 7 3 显示字符串 39 1 43 2 43 3 43 43 100 61 39 字符串编译阶段 xff0c 编译器将把它们拆开 xff0c 形成一个个单独的字节jump near start跳过没有指令的数据区1
  • 【java】杂七杂八的基础知识

    1 当用javac命令编译Java源程序 xff08 java文件 xff09 时 xff0c 必须写出该源文件的完整文件名 xff0c 包括扩展名 java 2 当用java exe命令运行一个字节码 class 文件时 xff0c 不必
  • 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

    摘要 修剪神经网络的参数可以在训练和测试期间节省时间 内存和能量 最近的研究发现 xff0c 通过一系列昂贵的训练和修剪周期 xff0c 初始化时存在中奖彩票或稀疏可训练的子网络 这就提出一个基本问题 xff1a 我们能否在初始化时识别出高
  • 常见通信协议-原理篇

    目录 前言通信协议分类1 串行与并行通信2 同步与异步通信3 串行通信数据传送方向常见通信方式分类不同分类协议需要额外处理的问题 各通信协议详解一 UART 通用异步收发器 1 接口连接方式2 帧格式波特率 二 IIC 集成电路总线 1 接
  • 树莓派安装ubuntu20.04、图形桌面、ROS笔记

    目录标题 1 安装ubuntu方式1 xff1a 树莓派镜像烧录器方式2 xff1a win32 Disk Imager 烧录软件 2 添加wifi方式一 network config文件方式二 50 cloud init yaml文件 x
  • Git 常用命令

    git 注 xff1a 在使用的任何的 git 命令前 xff0c 都要切换到 git 项目目录下 git init 初始化一个 git 仓库 git status 查看当前 git 仓库的状态 git add file 修改 file 文
  • 字符串查找函数strstr,strtok的详细介绍

    strstr 返回str2在str1中第一次出现的指针 xff0c 如果str2不是str1的一部分 xff0c 则返回空指针str1 xff08 简单来说就是在字符串里找子字符串 xff09 可以看到上图strstr函数找到子串后会把剩余
  • 实现Windows远程连接

    此方法不止局限于局域网内 xff0c 只要被控制端的电脑连接上了互联网 xff0c 那么在任意一个电脑上都可以连接 话不多说直接上干货 xff01 xff01 xff01 配置被控制端电脑 一 开启远程桌面访问功能 不是windwos专业版
  • Jetpack Compose 不止是一个UI框架~

    Jetpack Compose是用于构建原生Android UI的现代工具包 Jetpack Compose使用更少的代码 xff0c 强大的工具和直观的Kotlin API xff0c 简化并加速了Android上的UI开发 这是Andr
  • 父类和子类方法的调用

    由于没有找到想要的解释 xff0c 于是自己就在idea上自测来寻找答案 关于父类 xff0c 子类 xff0c 多态之间方法的调用 package 思考 public class 子类调用 public static void main
  • vector介绍与使用(C++)

    目录 一 vector的介绍 二 vector的使用 2 1构造函数 2 2vector iterator 的使用 2 3vector 空间增长问题 2 4 vector 增删查改 2 5 vector 迭代器失效问题 一 vector的介
  • 网络层——IP协议详细解读

    文章目录 IP协议1 IP协议的报文格式2 IP协议的地址管理3 IP地址的组成4 IP协议的路由选择 IP协议 之前介绍了传输层的重点协议 xff0c TCP和UDP协议 xff0c 以下将介绍网络层的重点协议IP协议 1 IP协议的报文

随机推荐

  • 基于opencv实现追踪物体的功能

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp From sztu 自动化专业的小菜鸡 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 本篇将介绍计算机视觉的物体追踪 基于py
  • PX4源码中CMakeLists.txt文件的相关含义

    在px4每个模块中 xff0c 都会引用到CMakeLists txt文件 比如 代码 px4 add module MODULE modules attitude estimator q MAIN attitude estimator q
  • 位置式Pid和增量式Pid的定义及应用

    PID算法是一个典型的闭环控制系统 P I D xff0c 比例 积分 微分 开环 xff1a 输入量对输出量没有反馈作用 xff1b 闭环 xff1a 输入量对输出量有反馈作用 位置式Pid 位置式Pid就是位置闭环控制 xff0c 位置
  • Mysql中的in和find_in_set的区别?

    1 是否使用索引 find in set xff1a 不使用索引 xff0c 是全表扫描in xff1a 使用索引 2 使用方法 在mysql中in的使用情况如下 xff08 in里面放的是常量 xff09 xff1a select fro
  • Docker 常用命令---持续更新中

    Docker xff1a Docker的三大核心概念 xff1a 镜像 容器 仓库 镜像 xff1a 类似虚拟机的镜像 用俗话说就是安装文件 容器 xff1a 类似一个轻量级的沙箱 xff0c 容器是从镜像创建应用运行实例 xff0c 可以
  • ubutu的Realsense摄像头的环境配置的报错解决(个人认为官方文档存在问题)以及官方视频流样例测试(无需摄像头)

    Realsense支持多种语言进行开发 xff0c 因为之前学过python xff0c 所以计划使用Pycharm进行相关的项目开发 xff0c 由于没带摄像头回家 xff0c 所以使用了官方的视频流进行测试 xff0c 以下是 xff3
  • launch文件

    1 launch文件 可以一次性启动多个ROS节点 实现 选定功能包右击 gt 添加 launch 文件夹 选定 launch 文件夹右击 gt 添加 launch 文件 编辑 launch 文件内容 lt launch gt lt nod
  • ROS文件系统相关命令

    1 增 catkin create pkg 自定义包名 依赖包 61 61 61 创建新的ROS功能包 sudo apt install xxx 61 61 61 安装 ROS功能包 2 删 sudo apt purge xxx 61 61
  • ros服务通信

    1 srv 61 请求 43 响应 2 不要重复添加路径 xff0c 会导致头文件寻找不到 客户端 include 34 ros ros h 34 include 34 plumbing server client AddInts h 34
  • ros常用组件

    一 TF坐标变换 transform frame frame id是被参考的坐标系 xff0c child frame id是另一个坐标系 translation代表child frame id相对于frame id的偏移量 rotatio
  • FreeRTOS学习(1)-- FreeRTOS任务创建、调度、任务间通信

    FreeRTOS学习 xff08 1 xff09 FreeRTOS任务创建 调度 任务间通信 文章目录 FreeRTOS学习 xff08 1 xff09 FreeRTOS任务创建 调度 任务间通信前言一 FreeRTOS任务状态二 Free
  • 让你秒读懂阿里云数据库架构与选型

    01 阿里云RDS的架构与规格大图 下图从高可用类型 数据可靠性 资源复用率 规格大小 规格代码等角度 xff0c 较为完整的概况了当前RDS主要的架构与规格 xff1a 从高可用区架构上 xff0c 分为单节点 xff08 基础版 xff
  • ROS teb_local_planner使用

    teb local planner则是2D导航堆栈的base local planner的插件 实现了一个在线优化的本地轨迹规划器 xff0c 用于导航和控制移动机器人 xff0c 作为ROS 导航包的插件 全局规划器生成的初始轨迹在运行时
  • rosdep update 出现time out 连接超时的问题(非常有效)

    问题 xff1a 在安装ros过程中 xff0c 按照官网执行rosdep update的指令大概率会出现如下报错 xff1a ERROR error loading sources list 39 The read operation t
  • 手把手教你写第一个Windows窗口

    第一个Windows窗口 效果展示详细过程设计窗口类注册窗口类创建窗口显示窗口更新窗口消息循环 源代码实用工具图标制作软件图标库 效果展示 第一个Windows窗口 详细过程 设计窗口类 首先 xff0c 自定义窗口类型名和窗口标题 xff
  • 把当前ubuntu16.0.4系统做成镜像<iso>

    Systemback是一个Ubuntu系统中用于发布自定义系统镜像和系统备份的软件 有时候我们对自己的Ubuntu做了很多设置 xff0c 比如各种软件包 xff0c 各种自定义的配置 我们想要在另一台电脑上也安装一个和我们一模一样的系统
  • VS2010开发ribbon风格的程序

    转自 xff1a http blog csdn net akof1314 article details 5268071 创建MFC应用程序项目 实际上 xff0c Ribbon界面 Office 2007风格的界面 的开发早在2008年就
  • win10下载DEVC++5.11

    作为一款免费开源的 C C 43 43 IDE xff0c 内嵌 GCC 编译器 xff08 GCC 编译器的 Windows 移植版 xff09 xff0c 且是 NOI NOIP 等比赛的指定工具 xff0c Dev C 43 43 的
  • ros实现串口通信(记录一次脱发的经历)

    组长发布任务 xff0c 我负责使用ros实现串口通讯 怎么说呢 xff0c 头发可以在地上 桌子上甚至任何地方 xff0c 除了头上 经过询问 xff0c 任务大概分为三个点 xff1a 1 接收话题名为 config detector
  • C++的第五个实验

    又是两周一次的C 43 43 实验时间 xff0c 最近事可真是太多了 问题一 1 检查下面的程序 xff0c 找出其中的错误 xff0c 并改正之 然后上机调试 xff0c 使之能正常运行 题目一 span class token mac