编写类 String 的构造函数、析构函数和赋值函数,并冒泡排序算法,使得结果逆序输出。程序以输入十个数为例,并且包含三个部分:输入、排序、输出。排序算法必须封装为函数
代码如下:
class String
{
public:
String(const char* str = NULL); // 普通构造函数
String(const String& other); // 拷贝构造函数
String& operator = (const String& other);
~String(); // 析构函数
private:
char* m_data;
};
String::String(const char* str)
{
this->m_data = new char[10];
strcpy_s(m_data, 10, str);
}
///*拷贝不用返回*/
String::String(const String& other)
{
m_data = new char[10];
strcpy_s(m_data, 10, other.m_data);
}
/*赋值重载返回this指针*/
String& String::operator=(const String& other)
{
m_data = new char[10];
strcpy_s(m_data, 10, other.m_data);
cout << m_data << endl;
return *this;
}
void paixu(int a[], int b)
{
int min, flag = 1;
for (int i = 0; i < b - 1; i++)
{
flag = 0;
for (int j = 0; j < b - i - 1; j++)
{
if (a[j] < a[j + 1])
{
flag = 1;
min = a[j + 1];
a[j + 1] = a[j];
a[j] = min;
}
}
}
char p[10];
int j, n;
char ch;
for (j = 0; j < 10; ++j) {//遍历所有个数
for (n = 0; a[j]; ++n) {//n=0,j=0
p[n] = a[j] % 10 + '0';//把元素倒过来插入到数组中
a[j] /= 10;
}
p[n] = '\0';
for (int i = 0; i < n / 2; ++i) {
ch = p[i];
p[i] = p[n - 1 - i];
p[n - 1 - i] = ch;
}
String in(p);
String dt(in);//调用拷贝
String tt = dt = in;//调用赋值
}
}
String:: ~String()
{
delete[] m_data;
}
int main()
{
cout << "请输入十个数" << endl;
int a;
int d[10];
for (int i = 0; i < 10 ; i++)
{
cin >> a;
d[i] = a;
}
paixu(d, 10);
}