第四周 任务三

浅浅的花香味﹌ 2022-06-14 10:50 320阅读 0赞
  1. //设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。下面给出类声明,请实现各成员函数。另外,模仿已经给出的main()函数,完成你所设计的各个成员函数的测试。
  2. #include<iostream>
  3. using namespace std;
  4. class NaturalNumber
  5. {private:
  6. int n;
  7. public:
  8. void setValue (int x);//置数据成员n的值,要求判断是否是正整数
  9. int getValue(); //返回私有数据成员n的值
  10. bool isPrime(); //判断数据成员n是否为素数,是返回true,否则返回false
  11. void printFactor(); //输出数据成员n的所有因子,包括1和n自身
  12. bool isPerfect(); //判断数据成员n是否为完全数。若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。
  13. bool isReverse(int x);//判断形式参数x是否为数据成员n的逆向数(例321是123的逆向数)。
  14. bool isDaffodil(int x); //判断形式参数x是否是水仙花数。水仙花数的各位数字立方和等于该数,如153=1*1*1+5*5*5+3*3*3
  15. void printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数;
  16. };
  17. void main(void)
  18. {
  19. NaturalNumber nn; //定义类的一个实例(对象)
  20. nn.setValue (6);
  21. cout << nn.getValue() << (nn.isPrime()? "是" : "不是") << "素数" << endl << endl;
  22. nn.setValue (37);
  23. cout << nn.getValue() << (nn.isPrime()? "是" : "不是") << "素数" << endl << endl;
  24. nn.setValue (84);
  25. cout << nn.getValue() << "的因子有:" ;
  26. nn.printFactor();
  27. cout << endl << endl;
  28. nn.setValue (321);
  29. cout << nn.getValue() << (nn.isPerfect()? "是" : "不是") << "完全数" << endl << endl;
  30. nn.setValue (28);
  31. cout << nn.getValue() << (nn.isPerfect()? "是" : "不是") << "完全数" << endl << endl;
  32. nn.setValue (123);
  33. cout << "和" << nn.getValue() << (nn.isReverse(321)? "是" : "不是") << "逆向数" << endl << endl;
  34. nn.setValue (654);
  35. cout << "和" << nn.getValue() << (nn.isReverse(345)? "是" : "不是") << "逆向数" << endl << endl;
  36. cout << (nn.isDaffodil(153)? "是" : "不是") << "水仙花数" << endl << endl;
  37. cout << (nn.isDaffodil(369)? "是" : "不是") << "水仙花数" << endl << endl;
  38. nn.setValue (1000);
  39. nn.printDaffodils();
  40. cout << endl;
  41. }
  42. //请在下面定义类中的各个成员函数
  43. void NaturalNumber :: setValue (int x) //置数据成员n的值,要求判断是否是正整数
  44. {
  45. if(x > 0)
  46. {
  47. cout << x << "是正整数" << endl ;
  48. }
  49. else
  50. {
  51. cout << x << "不是正整数" << endl ;
  52. }
  53. n = x;
  54. }
  55. int NaturalNumber :: getValue() //返回私有数据成员n的值
  56. {
  57. return n;
  58. }
  59. bool NaturalNumber :: isPrime() //判断数据成员n是否为素数,是返回true,否则返回false
  60. {
  61. for(int i = 2; i < n; ++i)
  62. {
  63. if(n % i == 0)
  64. {
  65. return false;
  66. break;
  67. }
  68. }
  69. return true;
  70. }
  71. void NaturalNumber :: printFactor() //输出数据成员n的所有因子,包括1和n自身
  72. {
  73. for(int i = 1; i <= n; ++i)
  74. {
  75. if(n % i == 0)
  76. {
  77. cout << i << '\t';
  78. }
  79. }
  80. }
  81. bool NaturalNumber :: isPerfect() //判断数据成员n是否为完全数。若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。
  82. {
  83. int m = 0;
  84. for(int i = 1; i < n; ++i)
  85. {
  86. if(n % i == 0)
  87. {
  88. m = m + i;
  89. }
  90. }
  91. if(n == m)
  92. {
  93. return true;
  94. }
  95. else
  96. {
  97. return false;
  98. }
  99. }
  100. bool NaturalNumber :: isReverse(int x)//判断形式参数x是否为数据成员n的逆向数(例321是123的逆向数)。
  101. {
  102. int a, b, s = 0;
  103. b = x;
  104. while(b != 0)
  105. {
  106. a = b % 10;
  107. b = b / 10;
  108. s = s * 10 + a;
  109. }
  110. cout << x;
  111. if(s == n)
  112. {
  113. return true;
  114. }
  115. else
  116. {
  117. return false;
  118. }
  119. }
  120. bool NaturalNumber :: isDaffodil(int x) //判断形式参数x是否是水仙花数。水仙花数的各位数字立方和等于该数,如153=1*1*1+5*5*5+3*3*3
  121. {
  122. cout << x;
  123. int m, i, j, s;
  124. m = x % 10;
  125. i = x / 100;
  126. j = (x % 100) / 10;
  127. s = i * i * i + j * j * j + m * m * m;
  128. if(s == x)
  129. {
  130. return true;
  131. }
  132. else
  133. {
  134. return false;
  135. }
  136. }
  137. void NaturalNumber :: printDaffodils() //显示所有大于1,且小于数据成员n的水仙花数
  138. {
  139. int m, i, j, s, h, num = 0;
  140. if(n <= 100)
  141. {
  142. cout << "没有水仙花数" << endl;
  143. exit(0);
  144. }
  145. for(h = 100; h < n; ++h)
  146. {
  147. m = h % 10;
  148. i = h / 100;
  149. j = (h % 100) / 10;
  150. s = i * i * i + j * j * j + m * m * m;
  151. if(s == h)
  152. {
  153. cout << h << '\t';
  154. ++num;
  155. }
  156. }
  157. if(num == 0) cout << "没有水仙花数" << endl;
  158. }

0_1331555787MnsW.gif

发表评论

表情:
评论列表 (有 0 条评论,320人围观)

还没有评论,来说两句吧...

相关阅读

    相关 四周

    [第四周课程总结&试验报告(二)][Link 1]   一.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和h

    相关 四周 任务四扩展二

    /任务 4 扩充 2(选做):手工输入工资?!太让人不能忍受了。现给出包含了 500 个职工工资的文件 salary.txt,从文件中读数据,完成上面的工作。

    相关 四周 任务

    /设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的

    相关 四周 任务

    //设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。下面给出类声明,请实现各成员函数。另外,模仿已经给出的main()函数,完成你所