"应用实践VC编程题详解:NUM类验证回文数命题"

版权申诉
0 下载量 50 浏览量 更新于2024-02-21 收藏 61KB DOC 举报
本题要求定义一个类NUM,验证一个命题:任意一个正整数与其反序数相加,得到一个新的正整数,再对这个新正数重复上述步骤,最终一定可以得到一个回文数。具体要求是私有数据成员int num用于存放验证的正整数,公有成员函数包括构造函数NUM(int x)用于初始化数据成员num,set(int a)用于设置num的值,yn(int n)用于判断n是否回文数,fun()用于验证命题并显示验证过程。在主函数中对该类进行测试,输出验证过程。 首先,根据题目要求,我们定义一个类NUM,具体代码如下: ```cpp #include <iostream> #include <string> using namespace std; class NUM { private: int num; public: NUM(int x) { num = x; } void set(int a) { num = a; } int yn(int n) { string s = to_string(n); int len = s.length(); for (int i = 0; i < len/2; i++) { if (s[i] != s[len-1-i]) { return 0; } } return 1; } void fun() { int temp = num; cout << "num=" << num << " 的验证过程如下:" << endl; while(!yn(temp)) { string s = to_string(temp); string s_reverse = s; reverse(s_reverse.begin(), s_reverse.end()); int reverse_num = stoi(s_reverse); temp += reverse_num; cout << temp - reverse_num << " " << reverse_num << "=" << temp << endl; } cout << "命题成立!" << endl; } }; ``` 然后,我们在主函数中对该类NUM进行测试: ```cpp int main() { NUM n1(350); n1.fun(); NUM n2(2015); n2.fun(); return 0; } ``` 运行结果如下: ``` num=350 的验证过程如下: 350 53=403 403 304=707 命题成立! num=2015 的验证过程如下: 2015 5102=7117 命题成立! ``` 可以看到,通过对两个正整数350和2015的验证过程,得到的结论是命题成立。因此,定义的类NUM可以成功验证给定命题。