求解c++编程问题
(1)私有数据成员
l int num :存放用于验证命题的正整数。
(2)公有成员函数
l NUM(int x):构造函数,用x初始化数据成员num,设置flag的初值为0。
l void set(int a):将num的值设置为a。
l int yn(int n):返回n的反序数,如n为1234,则其反序数为4321。
l void fun():使用num验证命题是否成立,并显示验证过程。
(3)在主函数中对该类进行测试。
输出示例:
num=350的验证过程如下:
350+53=403
403+304=707
707=707
命题成立!
num=2015的验证过程如下:
2015+5102=7117
7117=7117
命题成立! 展开
代码如下,注意运行的时候输入的数字不能太大,否则验证的时候有可能爆int
#include <iostream>
using namespace std;
class NUM{
public:
int num;
NUM(int x): num(x) {}
void set(int a) {
num = a;
}
const int yn(int n) {
int ans = 0;
int tmp = n / 10;
int idx = 1;
for (; tmp > 0; tmp /= 10) idx *= 10;
for (; n > 0; n /= 10) {
ans += idx * (n % 10);
idx /= 10;
}
return ans;
}
const void fun() {
printf("num=%d的验证过程如下:\n", num);
int a = num, b = yn(num);
while (a != b) {
printf("%d+%d=%d\n", a, b, a+b);
a = a + b;
b = yn(a);
}
printf("%d=%d\n命题成立!\n", a, b);
}
};
int main(int argc, char **argv) {
NUM num(0);
int n;
while (true) {
scanf("%d", &n);
num.set(n);
num.fun();
}
return 0;
}
运行结果如下: