Compare commits
No commits in common. "220ea31d680d29ef7287dcc31b4b4357b56c6280" and "2991bb5aeb515dcd971cb7ca732c12f93b6385e3" have entirely different histories.
220ea31d68
...
2991bb5aeb
|
@ -3,5 +3,3 @@
|
||||||
# 千锋 C++阶段
|
# 千锋 C++阶段
|
||||||
|
|
||||||
#### day1: C++简介, ::作用域, namespace 命名空间, using 声明, using 编译指令, 类型转换, struct 类型加强, bool 关键字, 三目运算符增强, const 增强
|
#### day1: C++简介, ::作用域, namespace 命名空间, using 声明, using 编译指令, 类型转换, struct 类型加强, bool 关键字, 三目运算符增强, const 增强
|
||||||
|
|
||||||
#### day2: const 和#define 的区别, 引用(reference) 【重要】, 内联函数, 函数的默认值参数, 函数的占位参数, 函数重载和 extern "c", 类与对象的概念, 面向对象程序设计案例
|
|
||||||
|
|
|
@ -36,9 +36,5 @@ int main()
|
||||||
p = p->next;
|
p = p->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(fn1);
|
|
||||||
free(fn2);
|
|
||||||
free(fn3);
|
|
||||||
free(head);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
78
day2/ce1.cpp
78
day2/ce1.cpp
|
@ -1,78 +0,0 @@
|
||||||
// Classroom exercises: 课堂练习
|
|
||||||
// ce
|
|
||||||
// 类的定义和使用
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Person
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void init(const char *iname, int iage);
|
|
||||||
void setName(const char sname[]);
|
|
||||||
void setAge(int sage);
|
|
||||||
const char *getname();
|
|
||||||
const int getAge();
|
|
||||||
const void show();
|
|
||||||
|
|
||||||
private:
|
|
||||||
char name[32];
|
|
||||||
int age;
|
|
||||||
};
|
|
||||||
|
|
||||||
void Person::init(const char *iname, int iage)
|
|
||||||
{
|
|
||||||
strcpy(this->name, iname);
|
|
||||||
if (iage > 0 && iage < 100)
|
|
||||||
this->age = iage;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this->age = 0;
|
|
||||||
cout << "年龄超出范围,拒绝赋值!" << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setName(const char sname[])
|
|
||||||
{
|
|
||||||
strcpy(this->name, sname);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setAge(int sage)
|
|
||||||
{
|
|
||||||
if (sage > 0 && sage < 100)
|
|
||||||
this->age = sage;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cout << "年龄超出范围,拒绝赋值!" << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *Person::getname()
|
|
||||||
{
|
|
||||||
return this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int Person::getAge()
|
|
||||||
{
|
|
||||||
return this->age;
|
|
||||||
}
|
|
||||||
|
|
||||||
const void Person::show()
|
|
||||||
{
|
|
||||||
cout << "name = " << this->name << ", age = " << this->age << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Person p1;
|
|
||||||
p1.setAge(20);
|
|
||||||
p1.setName("flykhan");
|
|
||||||
p1.show();
|
|
||||||
|
|
||||||
Person p2;
|
|
||||||
p2.init("hello", 0);
|
|
||||||
p2.show();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
30
day2/d1.cpp
30
day2/d1.cpp
|
@ -1,30 +0,0 @@
|
||||||
// 引用的使用
|
|
||||||
// 引用的本质是指针常量,所以引用的空间大小和指针相同,都是 8 个字节
|
|
||||||
// 引用的本质是指针常量,所以引用的指向不能改变,但是指向的值可以改变
|
|
||||||
// 引用的本质是指针常量,所以引用在定义时必须初始化,且不能再引用其他变量
|
|
||||||
// int a = 10;
|
|
||||||
// int &aa = a; // int * const aa = &a;
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
// 定义引用时,必须给初始化值,另外,定义之后引用不能再引用其他变量
|
|
||||||
int a = 10;
|
|
||||||
int &b = a; // 对 a 的引用
|
|
||||||
b += 20; // 相当于 a += 20
|
|
||||||
cout << "a: " << a << " b: " << b << endl;
|
|
||||||
|
|
||||||
int &c = a;
|
|
||||||
cout << "a: " << a << " b: " << b << " c: " << c << endl;
|
|
||||||
|
|
||||||
int &d = b;
|
|
||||||
cout << "a: " << a << " b: " << b << " c: " << c << " d: " << d << endl;
|
|
||||||
|
|
||||||
int x = 100;
|
|
||||||
c = x;
|
|
||||||
cout << "c: " << c << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
30
day2/d10.cpp
30
day2/d10.cpp
|
@ -1,30 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void f(int a, int)
|
|
||||||
{
|
|
||||||
cout << "f(int, int )" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void f(double, int)
|
|
||||||
{
|
|
||||||
cout << "f(double, int)" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void f(int a)
|
|
||||||
{
|
|
||||||
cout << "f(int)" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void f(double a)
|
|
||||||
{
|
|
||||||
cout << "f(double)" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
f(1);
|
|
||||||
f(1.0, 2);
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
#include "area.h"
|
|
||||||
|
|
||||||
double S(double r)
|
|
||||||
{
|
|
||||||
return r * r * 3.1415926;
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
#ifndef __AREA_H__
|
|
||||||
#define __AREA_H__
|
|
||||||
|
|
||||||
// 条件编译
|
|
||||||
#if __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
double S(double r);
|
|
||||||
|
|
||||||
#if __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,12 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
#include "area.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
double r = 2.5;
|
|
||||||
double s = S(r);
|
|
||||||
cout << "S(2.5) = " << s << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
26
day2/d12.cpp
26
day2/d12.cpp
|
@ -1,26 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
// 增强的结构体(c 中结构体中只有变量)
|
|
||||||
struct Person
|
|
||||||
{
|
|
||||||
int pid;
|
|
||||||
int age;
|
|
||||||
void show() // C++ 的结构体中可以加函数
|
|
||||||
{
|
|
||||||
// 可以访问同一结构体内的成员变量
|
|
||||||
cout << "pid = " << pid << ", age = " << age << endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Person p1 = {1001, 21};
|
|
||||||
p1.show();
|
|
||||||
|
|
||||||
Person p2 = {1002, 19};
|
|
||||||
p2.show();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
44
day2/d13.cpp
44
day2/d13.cpp
|
@ -1,44 +0,0 @@
|
||||||
// 类
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstring>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
namespace SA
|
|
||||||
{
|
|
||||||
class Student
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int sid = 14; // 默认值设定,需要 c++11 标准以上
|
|
||||||
char name[32] = "hello";
|
|
||||||
|
|
||||||
private:
|
|
||||||
float score = 90;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void showScore(); // 声明类方法
|
|
||||||
void addScore(float n) { this->score = n; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// 实现类中的方法(函数)
|
|
||||||
void Student::showScore()
|
|
||||||
{
|
|
||||||
cout << "sid = " << this->sid << ", name = " << this->name << ", score = " << this->score << endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace SA;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
Student s1;
|
|
||||||
strcpy(s1.name, "flykhan");
|
|
||||||
s1.sid = 1001;
|
|
||||||
s1.addScore(100);
|
|
||||||
s1.showScore();
|
|
||||||
|
|
||||||
Student s2;
|
|
||||||
s2.showScore();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
81
day2/d14.cpp
81
day2/d14.cpp
|
@ -1,81 +0,0 @@
|
||||||
// 立方体类与应用
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Cube
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void init(int l, int w, int h)
|
|
||||||
{
|
|
||||||
this->a = l;
|
|
||||||
this->b = w;
|
|
||||||
this->c = h;
|
|
||||||
}
|
|
||||||
int S(); // 面积
|
|
||||||
int V(); // 体积
|
|
||||||
void show();
|
|
||||||
bool isEqual(Cube &tmp);
|
|
||||||
|
|
||||||
private:
|
|
||||||
int a; // 长
|
|
||||||
int b; // 宽
|
|
||||||
int c; // 高
|
|
||||||
};
|
|
||||||
|
|
||||||
int Cube::S()
|
|
||||||
{
|
|
||||||
return 2 * (a * b + a * c + b * c);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Cube::V()
|
|
||||||
{
|
|
||||||
return a * b * c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Cube::show()
|
|
||||||
{
|
|
||||||
cout << "S = " << S() << ", V = " << V() << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Cube::isEqual(Cube &tmp)
|
|
||||||
{
|
|
||||||
// if (this->a == tmp.a && this->b == tmp.b && this->c == tmp.c)
|
|
||||||
if (this->S() == tmp.S() && this->V() == tmp.V())
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool equalCube(Cube &c1, Cube &c2)
|
|
||||||
{
|
|
||||||
if (c1.S() == c2.S() && c1.V() == c2.V())
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *resBool(bool b) // bool 数字值转换人类可读
|
|
||||||
{
|
|
||||||
if (b != 0)
|
|
||||||
return "true";
|
|
||||||
return "false";
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Cube c1, c2, c3;
|
|
||||||
c1.init(2, 3, 4);
|
|
||||||
cout << "c1: " << endl;
|
|
||||||
c1.show();
|
|
||||||
|
|
||||||
c2.init(3, 4, 5);
|
|
||||||
cout << "c2: " << endl;
|
|
||||||
c2.show();
|
|
||||||
|
|
||||||
c3.init(4, 2, 3);
|
|
||||||
|
|
||||||
cout << "Cube::isEqual(c2) = " << resBool(c1.isEqual(c2)) << endl;
|
|
||||||
cout << "equalCube(c1, c2) = " << resBool(equalCube(c1, c3)) << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
83
day2/d15.cpp
83
day2/d15.cpp
|
@ -1,83 +0,0 @@
|
||||||
// 点和圆的关系
|
|
||||||
#include <iostream>
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
enum Pos_e
|
|
||||||
{
|
|
||||||
onCircle = 4, // 点在圆上
|
|
||||||
inCircle, // 点在圆内
|
|
||||||
outCircle // 点在圆外
|
|
||||||
};
|
|
||||||
|
|
||||||
class Point
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int x, y;
|
|
||||||
};
|
|
||||||
|
|
||||||
class AdvCircle
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int init(int x0, int y0, int r)
|
|
||||||
{
|
|
||||||
this->r = r;
|
|
||||||
o.x = x0;
|
|
||||||
o.y = y0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pos_e at(Point &point);
|
|
||||||
|
|
||||||
private:
|
|
||||||
int r;
|
|
||||||
Point o; // 圆心点
|
|
||||||
};
|
|
||||||
|
|
||||||
Pos_e AdvCircle::at(Point &point)
|
|
||||||
{
|
|
||||||
int distence = pow((point.x - this->o.x), 2) + pow((point.y - this->o.y), 2);
|
|
||||||
int rr = r * r;
|
|
||||||
if (distence == rr)
|
|
||||||
{
|
|
||||||
return onCircle;
|
|
||||||
}
|
|
||||||
else if (distence < rr)
|
|
||||||
{
|
|
||||||
return inCircle;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return outCircle;
|
|
||||||
}
|
|
||||||
|
|
||||||
string posToString(Pos_e pos)
|
|
||||||
{
|
|
||||||
switch (pos)
|
|
||||||
{
|
|
||||||
case onCircle:
|
|
||||||
return "在圆上";
|
|
||||||
break;
|
|
||||||
case inCircle:
|
|
||||||
return "在圆内";
|
|
||||||
break;
|
|
||||||
case outCircle:
|
|
||||||
return "在圆外";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
AdvCircle c1;
|
|
||||||
c1.init(0, 0, 2);
|
|
||||||
|
|
||||||
Point p1;
|
|
||||||
p1.x = 1;
|
|
||||||
p1.y = 1;
|
|
||||||
|
|
||||||
cout << "c1.at(p1) " << posToString(c1.at(p1)) << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
23
day2/d2.cpp
23
day2/d2.cpp
|
@ -1,23 +0,0 @@
|
||||||
// 引用相当于变量的别名
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int arr[5] = {1, 2, 3, 4, 5};
|
|
||||||
|
|
||||||
// 给 arr 设置一个别名(引用)
|
|
||||||
// 先定义 5 个元素数组类型的别名
|
|
||||||
typedef int ArrRef[5];
|
|
||||||
ArrRef &a = arr;
|
|
||||||
|
|
||||||
// 通过别名操作数组
|
|
||||||
for (int i = 0; i < 5; i++)
|
|
||||||
{
|
|
||||||
cout << a[i] << " ";
|
|
||||||
}
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
// 数组引用的方法二
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int arr[5] = {1, 2, 3, 4, 5};
|
|
||||||
|
|
||||||
// 直接定义 5 个元素数组类型的引用
|
|
||||||
int(&a)[5] = arr;
|
|
||||||
|
|
||||||
// 通过别名操作数组
|
|
||||||
for (int i = 0; i < 5; i++)
|
|
||||||
{
|
|
||||||
cout << a[i] << " ";
|
|
||||||
}
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
23
day2/d3.cpp
23
day2/d3.cpp
|
@ -1,23 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
// 引用传递: 会改变实参的值
|
|
||||||
// 值传递: 不会改变实参的值
|
|
||||||
void cumsum(int &total, int n) // total 是引用传递,n 是值传递
|
|
||||||
{
|
|
||||||
total += n;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int total = 0;
|
|
||||||
int n = 0;
|
|
||||||
while (cin >> n)
|
|
||||||
{
|
|
||||||
cumsum(total, n);
|
|
||||||
cout << "total = " << total << endl;
|
|
||||||
if (total > 100)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
28
day2/d4.cpp
28
day2/d4.cpp
|
@ -1,28 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
#define N 10 // 定义常量
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
typedef int TenArr[N];
|
|
||||||
|
|
||||||
TenArr &new_arr()
|
|
||||||
{
|
|
||||||
static int m[N] = {0}; // 全局静态区存储,程序结束后才释放
|
|
||||||
for (int i = 0; i < N; i++)
|
|
||||||
{
|
|
||||||
m[i] = i;
|
|
||||||
}
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
TenArr &p = new_arr();
|
|
||||||
int i = 0;
|
|
||||||
while (i < N)
|
|
||||||
{
|
|
||||||
cout << "p[" << i << "] = " << p[i++] << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
57
day2/d5.cpp
57
day2/d5.cpp
|
@ -1,57 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#define N 7
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void sort(int (&arr)[N])
|
|
||||||
{
|
|
||||||
for (int i = 0; i <= N - 1; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j <= N - i - 1; j++)
|
|
||||||
{
|
|
||||||
if (arr[j] > arr[j + 1])
|
|
||||||
{
|
|
||||||
arr[j] ^= arr[j + 1];
|
|
||||||
arr[j + 1] ^= arr[j];
|
|
||||||
arr[j] ^= arr[j + 1];
|
|
||||||
// int temp = arr[j];
|
|
||||||
// arr[j] = arr[j + 1];
|
|
||||||
// arr[j + 1] = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sort(int arr[], int size)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < size - 1; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < size - i - 1; j++)
|
|
||||||
{
|
|
||||||
if (arr[j] > arr[j + 1])
|
|
||||||
{
|
|
||||||
int temp = arr[j];
|
|
||||||
arr[j] = arr[j + 1];
|
|
||||||
arr[j + 1] = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int nums[] = {1, 5, 2, 0, 9, 10, 7};
|
|
||||||
int size = sizeof(nums) / sizeof(nums[0]);
|
|
||||||
|
|
||||||
sort(nums);
|
|
||||||
// sort(nums, size);
|
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
|
||||||
{
|
|
||||||
cout << nums[i] << "\t";
|
|
||||||
}
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
29
day2/d6.cpp
29
day2/d6.cpp
|
@ -1,29 +0,0 @@
|
||||||
// 指针的引用
|
|
||||||
// 为指针取个别名,相当于'指针的指针'
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
struct STU
|
|
||||||
{
|
|
||||||
int sid;
|
|
||||||
float score;
|
|
||||||
};
|
|
||||||
|
|
||||||
void set_score(STU *&q, int sid, float score)
|
|
||||||
{
|
|
||||||
q->sid = sid;
|
|
||||||
q->score = score;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
STU *p = (STU *)malloc(sizeof(STU));
|
|
||||||
|
|
||||||
set_score(p, 1, 99);
|
|
||||||
|
|
||||||
cout << "sid = " << p->sid << ", score = " << p->score << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
// 指针的引用
|
|
||||||
// 为指针取个别名,相当于'指针的指针'
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
struct STU
|
|
||||||
{
|
|
||||||
int sid;
|
|
||||||
float score;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 指针的指针
|
|
||||||
void set_score(STU **q, int sid, float score)
|
|
||||||
{
|
|
||||||
(*q)->sid = sid;
|
|
||||||
(*q)->score = score;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
STU *p = (STU *)malloc(sizeof(STU));
|
|
||||||
|
|
||||||
set_score(&p, 2, 98);
|
|
||||||
|
|
||||||
cout << "sid = " << p->sid << ", score = " << p->score << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
28
day2/d7.cpp
28
day2/d7.cpp
|
@ -1,28 +0,0 @@
|
||||||
// 常量引用
|
|
||||||
// 相当于 常量指针常量
|
|
||||||
// 用法: const 数据类型 &变量名 = 其他变量或常量
|
|
||||||
|
|
||||||
// 注意:
|
|
||||||
// 一般的引用不能赋值常量(字面量),但是 const 引用可以赋值常量
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
int x = 10;
|
|
||||||
const int &x1 = x;
|
|
||||||
|
|
||||||
// error: assignment of read - only reference ‘x1’
|
|
||||||
x1 -= 5; // const 修饰的引用不能修改内容
|
|
||||||
cout << "x = " << x << endl;
|
|
||||||
|
|
||||||
const int &x2 = 50;
|
|
||||||
cout << "x2 = " << x2 << endl;
|
|
||||||
|
|
||||||
// error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
|
|
||||||
int &x3 = 'a'; // 常量不能赋值给非常量引用
|
|
||||||
cout << "x3 = " << x3 << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
26
day2/d8.cpp
26
day2/d8.cpp
|
@ -1,26 +0,0 @@
|
||||||
// 内联函数
|
|
||||||
// 函数前面添加了 inline 关键字,则此函数为内联函数
|
|
||||||
// 内联函数只能在当前文件中使用,相当于函数前面加 static
|
|
||||||
|
|
||||||
// 内联函数一般用于替换 有参的宏,有参宏经常会出错,而且参数是无数据类型
|
|
||||||
// 每一次使用内联函数时,都会像有参宏一样,展开一次(内联函数不入栈,运行效率高,编译时会提前处理)
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#define ADD(x, y) x + y
|
|
||||||
// 内联函数
|
|
||||||
inline int add(int a, int b)
|
|
||||||
{
|
|
||||||
return a + b;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int ret1 = ADD(10, 20) * 10;
|
|
||||||
cout << "ret = " << ret1 << endl;
|
|
||||||
|
|
||||||
int ret2 = add(10, 20) * 10;
|
|
||||||
cout << "ret = " << ret2 << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
30
day2/d9.cpp
30
day2/d9.cpp
|
@ -1,30 +0,0 @@
|
||||||
// 函数的默认参数
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
bool isSs(int n = 10) // 判断 n 是否为质数
|
|
||||||
{
|
|
||||||
int i = 2;
|
|
||||||
for (; i < n / 2; i++)
|
|
||||||
{
|
|
||||||
if (n % i == 0)
|
|
||||||
return false; // 0 为假
|
|
||||||
}
|
|
||||||
return true; // 非 0 为真
|
|
||||||
}
|
|
||||||
|
|
||||||
double area(double r = 1.0) // 求面积
|
|
||||||
{
|
|
||||||
return 3.14 * r * r;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
cout << "isSS(7) is " << isSs(7) << endl;
|
|
||||||
cout << "isSS() is " << isSs() << endl;
|
|
||||||
cout << "area() is " << area() << endl;
|
|
||||||
cout << "area(2) is " << area(2) << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
// 找错
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
const int n = 10;
|
|
||||||
const int &p = n;
|
|
||||||
// p++; // 错误,不能修改常量引用所引用的值
|
|
||||||
cout << "n=" << n << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int func1(int a, int, int b = 20)
|
|
||||||
{
|
|
||||||
return a + b;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
cout << func1(10, 30) << endl;
|
|
||||||
cout << func1(10, 10, 100) << endl;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
// 1. 2. 创建一个名为 Rectangle 的类,具有成员变量 width 和 height,以及成员函数 double calculateArea() ,用于计算矩形的面积。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Rectangle
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
double calculateArea()
|
|
||||||
{
|
|
||||||
return width * height;
|
|
||||||
}
|
|
||||||
|
|
||||||
int width, height;
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
// 1. 2. 创建一个名为 Circle 的类,具有成员变量 radius 和 pi(圆周率),以及成员函数 double calculateArea() ,用于计算圆的面积。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Circle
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
double radius, pi = 3.1415926;
|
|
||||||
double calculateArea()
|
|
||||||
{
|
|
||||||
return pi * radius * radius;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
// 1. 2. 创建一个名为 BankAccount 的类,具有成员变量 accountNumber 和 balance,以及成员函数 void deposit(double amount) 和 void withdraw(double amount) ,用于存款和取款操作。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class BankAccount
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
long accountNumber, balance;
|
|
||||||
void deposit(double amount)
|
|
||||||
{
|
|
||||||
this->balance += amount;
|
|
||||||
}
|
|
||||||
void withdraw(double amount)
|
|
||||||
{
|
|
||||||
this->balance -= amount;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
// 创建一个名为 Student 的类,具有成员变量 name 和 grade,以及成员函数 void study(char *course) ,用于表示某班级的某学生正在学习某一门课程。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Student
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
char name[32]; // 学生姓名
|
|
||||||
char grade[32]; // 班级名
|
|
||||||
void study(char *course)
|
|
||||||
{
|
|
||||||
cout << this->grade << "班的" << this->name << "同学正在学习" << course << endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
// 创建一个名为 Car 的类,具有成员变量 brand 和 speed,以及成员函数 void accelerate() 和 void brake() ,用于加速和刹车操作。
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Car
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
string brand;
|
|
||||||
int speed;
|
|
||||||
void accelerate()
|
|
||||||
{
|
|
||||||
this->speed += 1;
|
|
||||||
cout << "加速 1 码" << endl;
|
|
||||||
}
|
|
||||||
void brake()
|
|
||||||
{
|
|
||||||
if (this->speed > 0)
|
|
||||||
{
|
|
||||||
this->speed -= 1;
|
|
||||||
cout << "减速中" << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cout << "车已经停下了" << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
// 1. 2. 创建一个名为 Employee 的类,具有成员变量 name、id 和 salary,以及成员函数 void displayInfo() ,用于显示员工的信息。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Employee
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
string name;
|
|
||||||
int id;
|
|
||||||
int salary;
|
|
||||||
void displayinfo()
|
|
||||||
{
|
|
||||||
cout << "员工信息\nid: " << this->id << "\t姓名: " << this->name << "\t薪水: " << this->salary << endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,58 +0,0 @@
|
||||||
// 创建一个名为 Book 的类,具有成员变量 title、author 和 year,以及成员函数 void displayInfo() ,用于显示图书的信息。 创建Book类的数组,至少存放5本书,并设计全局函数,实现Book对象按year从大到小排序,并显示排序后信息。
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Book
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
string title, author;
|
|
||||||
int year;
|
|
||||||
// 使用 const 加 & 引用,避免不必要的拷贝
|
|
||||||
void init(const string &title, const string &author, int year)
|
|
||||||
{
|
|
||||||
this->title = title;
|
|
||||||
this->author = author;
|
|
||||||
this->year = year;
|
|
||||||
}
|
|
||||||
void displayinfo()
|
|
||||||
{
|
|
||||||
cout << "书名: " << this->title << " , 作者: " << this->author << " , 出版年份: " << this->year << endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void sortAndShow(Book book[], int n)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
for (; i < n; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < n - i - 1; j++)
|
|
||||||
{
|
|
||||||
if (book[j].year < book[j + 1].year)
|
|
||||||
{
|
|
||||||
Book tmp = book[j];
|
|
||||||
book[j] = book[j + 1];
|
|
||||||
book[j + 1] = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
book[i].displayinfo();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Book books[5];
|
|
||||||
books[0].init("数学", "张三", 1998);
|
|
||||||
books[1].init("语文", "李四", 2009);
|
|
||||||
books[2].init("英语", "王五", 1987);
|
|
||||||
books[3].init("物理", "赵六", 2008);
|
|
||||||
books[4].init("化学", "郑七", 1982);
|
|
||||||
|
|
||||||
sortAndShow(books, 5);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue