【发布时间】:2020-08-22 02:14:15
【问题描述】:
我已经尝试了一个小时来解决这个问题,这非常令人沮丧,我无法理解为什么下一个循环无法验证自己
while(p>1) {
p--;
if (pow(n, contor) == p) {
contor2++;
}
}
完整的代码
#include <iostream>
#include <cmath>
int main()
{
int n, p, resetP;
float contor = 0;
float contor2 = 0;
n = 3;
p = 100;
resetP = p;
while (p > 1)
{
contor++;
p = p / n;
}
p = resetP;
while (p > 1)
{
p--;
if (pow(n, contor) == p)
contor2++;
}
std::cout << contor2;
}
我在这里尝试做的是验证if(pow(3, 4)==81,但它似乎不起作用。 p 我将它从 100 设置为从 1 到 0。当它达到 81 时,它只是越过它,就像它只是不验证 if 而我的 contor2 保持完全相同(即为 0)。我已经学习 C++ 6 个多月了,但这是我第一次真正陷入困境。
【问题讨论】:
-
你所说的“验证自己的循环”是什么意思?
-
为什么你期望
pow( 3, 4.0f )正好等于81?p == 80时contor2增加了吗? -
提供的代码无法编译,您能否尝试包含minimal reproducible example?
-
pow函数返回一个浮点值。您将结果分配给一个整数。这里会有一些截断。 -
“我希望 pow(3, 4)==81 因为 3x3x3x3=81”了解浮点运算以及为什么使用相等运算符比较浮点不是一个好主意
标签: c++ loops for-loop while-loop pow