This question already has answers here:
Making a square() function without x*x in C++
                                
                                    (7个答案)
                                
                        
                                在10个月前关闭。
            
                    
我是编程的初学者,并尝试通过《编程原理和使用C ++的实践》一书学习C ++。在本书的某些部分中,您可以尝试做一些练习,其中的一项练习是计算数字的平方,这就是我的书所说的:


  
    在不使用乘法运算符的情况下实现square(),即通过重复加法来执行x * x(将变量结果开始为0并将x加x倍)。
  


我已经找到了该程序的解决方案,但是我的第一个尝试是这样的:

#include <iostream>

int main()
{
    int a = 0;
    std::cout << "Enter an integer value : ";
    std::cin >> a;

    while (a < a * a)
    {

        a += a;
        std::cout << a << "\n";

    }
}


我知道此代码是错误的,但我无法理解程序的输出,如果我输入5,程序将打印10 20 30 40 50直到8000,为什么当a大于其平方时for循环不会停止?我很好奇我为什么

最佳答案

尝试避免乘法时使用乘法似乎已损坏。那这个呢:

int r = 0;

for (int n = 0; n < a; ++n) {
  r += a;
}

关于c++ - 求不乘的数字平方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27157317/

10-13 06:40