第一题
#include<iostream>
using namespace std;
class Fraction {
//数据成员,访问控制属性默认是私有
int m_numerator = 0; // 分子默认为0; C++11
int m_denominator = 1; //分母默认为1;
public://公有成员函数
Fraction(int above = 0, int below = 1) :
m_numerator(above), m_denominator(below) {
cout << "Constructor called" << endl;
}//构造函数
Fraction(const Fraction& rhs) : m_numerator(rhs.m_numerator),
m_denominator(rhs.m_denominator) {
cout << "Copy constructor called" << endl;
}//拷贝构造函数
~Fraction() {
cout << "析构函数的调用" << endl;
}//析构函数
int getnumerator() const
{
return m_numerator;
}//获取分数的分子
int getdenominator() const
{
return m_denominator;
}//获取分数的分母
};
Fraction divide1(const Fraction& divident, const Fraction& divisor) {
return Fraction(divident.getnumerator() * divisor.getdenominator(),
divident.getdenominator() * divisor.getnumerator());
}
Fraction divide2(Fraction divident, Fraction divisor) {
Fraction result(divident.getnumerator() * divisor.getdenominator(),
divident.getdenominator() * divisor.getnumerator());
return result;
}
Fraction A(Fraction a) {
int r =a.getnumerator(), m=0, n=0, p=0;
if (a.getnumerator() > a.getdenominator() ){
m = a.getnumerator();
n = a.getdenominator();
}
else if (a.getnumerator()< a.getdenominator()){
n = a.getnumerator();
m = a.getdenominator();
}
else if (a.getnumerator()== a.getdenominator()) {
p = a.getnumerator();
r = 0;
}
while (r != 0) {
r = m % n;
m = n;
n = r;
p = m;
}
int i = a.getnumerator() / p;
int j = a.getdenominator() / p;
cout << i << " " << j << endl;
return Fraction(i, j);
}//约分
Fraction B(Fraction a, Fraction b) {
int i = a.getnumerator() * b.getdenominator();
int j = a.getdenominator() * b.getnumerator();
int q = a.getdenominator() * b.getdenominator();
Fraction c = Fraction(i + j, q);
A(c);
}//通分
Fraction operator /(Fraction a,Fraction b) {
Fraction c((a.getnumerator() * b.getdenominator(),
a.getdenominator() * b.getnumerator()));
return c;
}//除法
int main() {
Fraction a;
Fraction b(a);
Fraction c = Fraction(3, 2);
Fraction d1(2, 3), d2(4, 5);
Fraction e1 = divide1(d1, d2);
Fraction e2 = divide2(d1, d2);
Fraction a(1, 2);
Fraction b(2, 3);
return 0;
}
第二题
#include<iostream>
#include<vector>
using namespace std;
int a[5] = { 19,67,24,11,17 }, b[5] = { 2,3,9,17,59 };
vector<int>v;
void A(int m) {
for (int i = 0; i <= 4; i++) {
if (a[i] == m){
cout <<"a中下标为"<< i << endl;
break;
}
if (i == 4)
cout << "不存在这个元素" << endl;
}
}//顺序查找
void D(int key) {
int low = 0;
int high = 4;
while (low <= high) {
int pos = (low + high) / 2;
if (key < b[pos])
high = pos - 1;
else if (key > b[pos])
low = pos + 1;
else if (key = b[pos]) {
cout << "b中下标为" << pos << endl;
break;
}
}
}
//折半查找
bool B(int n){
int d = sqrt(n);
for (int i = 2; i <= d; i++) {
if (n % i == 0)
return 0;
if (i == d)
return 1;
}
}//素数函数
int C(int j) {
int temp;
for (; j >= 2; j--) {
for (int i = 0; i <= j - 2; i++) {
if (v[i] > v[i + 1]) {
temp = v[i];
v[i] = v[i + 1];
v[i + 1] = temp;
}
}
}
return 0;
}//排序函数
int main() {
int c;
cin >> c;
A(c);//判断a中17下标
D(c);//判断b中17下标
for (int i = 0; i <= 4; i++) {
if (B(a[i]) == 1)
v.push_back(a[i]);
}
for (int i = 0; i <= 4; i++) {
if (B(b[i]) == 1)
v.push_back(b[i]);
}//将素数合并到c中
cout << "排序前";
for (int i = 0; i <= size(v)-1; i++) {
cout << v[i] << '\t';
}
cout << endl;
cout << "排序后";
C(size(v));
for (int i = 0; i <= size(v) - 1; i++) {
cout << v[i] << '\t';
}
//输出
return 0;
}
第三题
#include<iostream>
using namespace std;
#define Pi 3.14
class Point {
double m_x = 0, m_y = 0;
public:
Point(double x = 0, double y = 0) : m_x(x), m_y(y) {
cout << "Constructor of Point" << endl;
}
Point(const Point& p) :m_x(p.m_x), m_y(p.m_y) {
cout << "Copy constructor of Point" << endl;
}
~Point() {
cout << "Destructor of Point" << endl;
}
double getX() {
return m_x;
}
double getY() {
return m_y;
}
friend Point distance(Point a, Point b);
};
Point distance(Point a, Point b) {
double i = (a.m_x - b.m_x) * (a.m_x - b.m_x) + (a.m_y - b.m_y) * (a.m_y - b.m_y);
double dis = sqrt(i);
}
class Circle {
Point m_center; double m_radius = 1.0;
public:
Circle(double r = 1, const Point& p = Point()) :m_center(p), m_radius(r) {
cout << "Constructor of Circle" << endl;
}
~Circle() {
cout << "Destructor of Circle" << endl;
}
Circle S ( Circle a) {
double squre = a.m_radius * a.m_radius * Pi;
cout << "面积为"<<squre << endl;
return *this;
}
Circle C(Circle a) {
double circu = 2 * a.m_radius * Pi;
cout <<"周长为" <<circu << endl;
return*this;
}
};
int main()
{
Point m(5, 5);
cout << m.getX() << endl;
cout << m.getY() << endl;
Circle a(2, Point(1, 1));
a.C(a);
a.S(a);
cout << "end" << endl;
return 0;
}
//执行流程:先运行Point的构造函数,再运行Circle的构造函数
//再运行Circle的析构函数,最后运行Point的析构函数
//结果:Constructor of Point
//Copy constructor of Point
//Constructor of Circle
//Destructor of Point
//end
//Destructor of Circle
//Destructor of Point
第三题