我正在尝试使用计算来分隔数字,然后将它们平方,然后添加
他们在一起。因此,79将变为7和9.然后我希望它将7和9平方并添加结果。 并重新做一遍,直到我有50个结果或结果变为1.它也循环
无限地。任何想法??
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cmath>
using namespace std;
int main ()
{
int number = 79;
int newNumber1;
int newNumber2;
int digit1;
int digit2;
int count;
int counter = 1;
while(number != 1 && counter != 50)
{
for(count = 1; count <= 10; count++)
{
cout << setw(8) << number;
counter++;
digit1 = number / 10;
digit2 = number % 10;
newNumber1 = pow(digit1 , 2);
newNumber2 = pow(digit2 , 2);
number = newNumber1 + newNumber2;
}
}
cout << endl << endl;
return 0;
}
答案 0 :(得分:3)
内部for
循环每次外循环迭代将运行10次。这意味着在第一个外循环迭代中,counter
将是1
,第二个11
,第三个21
,第四个31
,第五个41
{1}}和第六个51
;因此条件counter != 50
应该是counter < 50
。
number
背后的逻辑在某种程度上似乎也存在缺陷。在第一次迭代newNumber1 = 49
和newNumber2 = 81
中,您有number = 49 + 81 = 130
。现在下一次迭代你有newNumber1 = 13 ^ 2
和newNumber2 = 0
。所以这个数字似乎总是在增加
number = 1
只有在您newNumber1 = 1
和newNumber2 = 0
或反之时才会发生。仅当digit1
或digit2
为= 1
时才会发生这种情况。这仅在number = 10
时发生,但number = 10
似乎永远不会发生。所以条件number != 1
并没有多大意义。