[题目]求取值范围内所有满足条件的x,使得x的每位数字的立方和与本身相等。[编程要求] 试建立一个类DIF,完成求出某个范围内的所有满足条件的x,以及x的个数。具体要求如下: (1)私有数据成员。 int lowhigh:x的取值范围的下限和上限。 int a[100]:存放满足要求的x。 int count:满足条件的x的个数。(2)公有成员函数 DIF(int lw,int hi):构造函数,用参数1w和hi分别初始化low和high。缺省的取值范围是[10,1000]。 int isdiff(intx):判断参数x是否为水仙花数,若是返回1,若不是返回。。 void process():求出满足条件的所有x,并将结果存入数组a,同时统计x的个数。 void show():输出数组a及count。 (3)在主函数中完成对该类的测试。定义一个DIF类的对象v,使用100和999初始化其下限和上限,按上述要求处理并输出结果。
时间: 2024-03-18 22:38:28 浏览: 103
好的,我知道了。下面是答案:
```python
#include <iostream>
#include <cmath>
using namespace std;
class DIF {
private:
int lowhigh;
int a[100];
int count;
public:
DIF(int lw = 10, int hi = 1000) {
lowhigh = (lw << 16) | (hi & 0xFFFF);
}
int isdiff(int x) {
int sum = 0;
int n = x;
while (n > 0) {
int d = n % 10;
sum += d * d * d;
n /= 10;
}
return x == sum;
}
void process() {
int lw = lowhigh >> 16;
int hi = lowhigh & 0xFFFF;
count = 0;
for (int i = lw; i <= hi; i++) {
if (isdiff(i)) {
a[count++] = i;
}
}
}
void show() {
cout << "满足条件的数有:" << endl;
for (int i = 0; i < count; i++) {
cout << a[i] << " ";
}
cout << endl << "满足条件的数的个数是:" << count << endl;
}
};
int main() {
DIF v(100, 999);
v.process();
v.show();
return 0;
}
```
输出结果:
```
满足条件的数有:
153 370 371 407
满足条件的数的个数是:4
```
阅读全文