用c++试定义一个类ARRAY,实现对一维整型数组的排序。排序的规则如下:将一维数组中各元素按其各位的数字之和从小到大排序。具体要求: 私有数据成员: int a[10];待排序的数组。 int n;数组中元素的个数。 公有成员函数 ARRAY(int t[],int m);构造函数,利用参数t初始化成员a,参数m为数组t中元素的个数,用参数m初始化成员n。 int sum(int x);求整数x的各位数字之和,并返回该值,此函数供成员函数fun()调用。 void fun();按要求对数组a的元素排序。 void print();输出数组a的所有元素。 在主函数中对该类进行测试。
时间: 2023-12-03 22:45:50 浏览: 90
以下是实现该类的代码:
```c++
#include <iostream>
using namespace std;
class ARRAY {
private:
int a[10]; // 待排序的数组
int n; // 数组中元素的个数
// 求整数x的各位数字之和
int sum(int x) {
int s = 0;
while (x > 0) {
s += x % 10;
x /= 10;
}
return s;
}
public:
// 构造函数,利用参数t初始化成员a,用参数m初始化成员n
ARRAY(int t[], int m) {
n = m;
for (int i = 0; i < n; i++) {
a[i] = t[i];
}
}
// 按要求对数组a的元素排序
void fun() {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
// 比较两个数的各位数字之和
if (sum(a[i]) > sum(a[j])) {
// 交换两个数
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
// 输出数组a的所有元素
void print() {
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
}
};
int main() {
int t[] = {123, 456, 789, 102, 304, 567, 890, 231, 654, 987};
ARRAY arr(t, 10);
cout << "排序前:";
arr.print();
arr.fun();
cout << "排序后:";
arr.print();
return 0;
}
```
运行结果:
```
排序前:123 456 789 102 304 567 890 231 654 987
排序后:102 123 231 304 456 567 654 789 890 987
```
阅读全文