1.冒泡排序
说明:封装一个函数,用冒泡排序,对整型数组进行升序排序
例:int arr[10] = {5,4,9,2,7,1,0,8,3,6};
#include <iostream>
using namespace std;
void BubbleSort(int *arr, int len)
{
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - 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 arr[10] = { 5,4,9,2,7,1,0,8,3,6 };
int len = sizeof(arr) / sizeof(arr[0]);
int* p = arr;
BubbleSort(p, len);
for (int i = 0; i < len; i++)
{
cout << *p << " ";
p++;
}
cout << endl;
system("pause");
return 0;
}
2.结构体数组排序
说明:设计一个结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5个结构体。用冒泡排序,将数组中的结构体按照年龄进行升序,最终打印排序后的结果。
#include <iostream>
#include <string>
using namespace std;
struct Student
{
string name;
int age;
string sex;
};
void BubbleSort(Student st[5], int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (st[j].age > st[j+1].age)
{
int temp = st[j].age;
st[j].age = st[j+1].age;
st[j + 1].age = temp;
}
}
}
}
void Print(Student st[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "姓名:" << st[i].name << " " << "年龄:" << st[i].age << " " << "性别:" << st[i].sex << endl;
}
}
int main()
{
struct Student stu[5] = { {"A",18,"男"},{"B",20,"男"},{"C",19,"女"},{"D",22,"女"},{"E",21,"男"}};
int len = sizeof(stu) / sizeof(stu[0]);
BubbleSort(stu, len);
Print(stu, len);
system("pause");
return 0;
}
3.老师带学生
说明:一共有3名老师,每名老师带5位学生,设计学生和老师的结构体,在老师的结构体中,有老师的姓名和一个存放5名学生的数组作为成员;
学生成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值;最终打印老师数据以及所带的学生数据。
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
struct Student
{
string name;
int score;
};
struct Teacher
{
string name;
struct Student stu[5];
};
void allocate(struct Teacher TeacherAarray[], int len)
{
string Name = "ABCDEF";
string name = "abcdefghijklmnopurst";
for (int i = 0; i < len; i++)
{
TeacherAarray[i].name = "Teacher_";
TeacherAarray[i].name += Name[i];
for (int j = 0; j < 5; j++)
{
TeacherAarray[i].stu[j].name = "Student_";
TeacherAarray[i].stu[j].name += name[j];
int random = rand() % 100 + 1;
TeacherAarray[i].stu[j].score = random;
}
}
}
void Print(struct Teacher TeacherAarray[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师姓名:" << TeacherAarray[i].name << endl;
for (int j = 0; j < 5; j++)
{
cout << "学生姓名:" << TeacherAarray[i].stu[j].name << " " << "学生成绩:" << TeacherAarray[i].stu[j].score << endl;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
struct Teacher TeacherAarray[3];
int len = sizeof(TeacherAarray) / sizeof(TeacherAarray[0]);
allocate(TeacherAarray, len); //赋值
Print(TeacherAarray, len); //打印
system("pause");
return 0;
}
4.设计立法体类
说明:求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等。
#include <iostream>
using namespace std;
class Cube //创建立方体类
{
public:
void setH(int h) //设置高度
{
m_h = h;
}
int getH() //获取高度
{
return m_h;
}
void setL(int l) //设置长度
{
m_l = l;
}
int getL() //获取长度
{
return m_l;
}
void setW(int w) //设置宽度
{
m_w = w;
}
int getW() //获取宽度
{
return m_w;
}
int caculateS() //计算面积
{
return 2 * m_l * m_h + 2 * m_l * m_w + 2 * m_w * m_l;
}
int caculateV() //计算体积
{
return m_l * m_w * m_h;
}
private:
int m_h; //高
int m_l; //长
int m_w; //宽
};
bool isSame(Cube& c1, Cube& c2) //判断两个立方体是否相等
{
if (c1.getH() == c2.getH() && c1.getL() == c2.getL() && c1.getW() == c2.getW())
return true;
return false;
}
int main()
{
Cube c1; //创建立方体对象c1
c1.setH(20);
c1.setL(20);
c1.setW(30);
cout << "c1的面积是" << c1.caculateS() << endl;
cout << "c1的体积是" << c1.caculateV() << endl;
Cube c2; //创建立方体对象c1
c2.setH(10);
c2.setL(10);
c2.setW(10);
cout << "c2的面积是" << c2.caculateS() << endl;
cout << "c2的体积是" << c2.caculateV() << endl;
bool ret = isSame(c1, c2);
if (ret)
{
cout << "c1与c2相等" << endl;
}
else
{
cout << "c1与c2不相等" << endl;
}
system("pause");
return 0;
}
5.点和圆的关系
说明:设计一个圆类,和一个点类,计算点和圆的关系。
#include <iostream>
using namespace std;
class Point //创建点类
{
public:
void setX(int x) //设置x轴坐标
{
m_x = x;
}
int getX() //获取x轴坐标
{
return m_x;
}
void setY(int y) //设置y轴坐标
{
m_y = y;
}
int getY() //获取y轴坐标
{
return m_y;
}
private:
int m_x;
int m_y;
};
class Circle
{
public:
void setR(int r) //设置半径
{
m_r = r;
}
int getR() //获取半径
{
return m_r;
}
void setCenter(Point Center) //设置圆心
{
m_center = Center;
}
Point getCenter() //获取圆心
{
return m_center;
}
private:
int m_r; //半径
Point m_center; //圆心
};
int isInCircle(Circle& c, Point& p) //判断点跟圆的关系
{
int distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
int R = c.getR() * c.getR(); //半径平方
if (distance == R)
{
cout << "点在圆上" << endl;
}
else if (distance < R)
{
cout << "点在圆内" << endl;
}
else
{
cout << "点在圆外" << endl;
}
return 0;
}
int main()
{
Circle c; //创建圆对象c
c.setR(10);
Point center; //创建点对象center
center.setX(10);
center.setY(0);
c.setCenter(center);
Point p; //创建点对象p
p.setX(10);
p.setY(10);
isInCircle(c, p);
system("pause");
return 0;
}