C++ 计算一个数的平方根的程序。

C++ 计算一个数的平方根的程序。,c++,C++,我必须做一个程序,它接受一个数字并输出它的平方根。Ex-45->3√5.我做了一个程序,但它只返回我输入的数字。非常感谢您的帮助。 这是我的代码-> #include<iostream> using namespace std; int squarerootfinder(int number, int divisor){ if(divisor == 1){ return 1; } else{ if(

我必须做一个程序,它接受一个数字并输出它的平方根。Ex-45->3√5.我做了一个程序,但它只返回我输入的数字。非常感谢您的帮助。 这是我的代码->

#include<iostream>
using namespace std;


int squarerootfinder(int number, int divisor){
     if(divisor == 1){

            return 1;
     }
     else{

            if((number / (divisor * divisor))% 1 != 0){

                    divisor = squarerootfinder(number, divisor - 1);

            }
            if((number/ (divisor * divisor)) % 1 == 0 ){
            return divisor;

            }

      }

}
int main(){
     int number;
     cout << "Enter a number to find the square root of it \n";
     cin >> number;
     int divisor = number;
     int squareroot;
     squareroot = squarerootfinder(number, divisor);
     cout << squareroot << endl;
     return 0;
}

此行的两个问题都与整数类型有关:

ifnumber/除数*除数%1!=0{

记住整数运算的结果是整数,进入函数的第一组值的值是多少?假设数字是5。那么我们有:

5/5*5=5/25=0


同样的道理也适用于%1。整数始终是整数,因此按1修改总是返回0。

这里的问题是使用正确的算法,即您需要在squareRootFinder函数中使用std库中的cmath头。您也可以使用函数来获取整数。这是我的代码。希望它能有所帮助

#include <iostream>
#include <cstring>
#include <cmath>


using namespace std;

int getPositiveInt(string rqstNum)
    {
        int num;
        do
        {
           cout << rqstNum << endl;
           cin >> num;
        }while(num == 0);

        return num;
    }


double squareRootFinder(double Num)
    {
        double squareroot;
        squareroot = sqrt(Num);
        return squareroot;
    }

int main()
{
 int Num = getPositiveInt("Enter a number and i'll calculate the squareroot ");
 double squareroot = squareRootFinder(Num);

    // To dispay the answer to two decimal places we cast the squareroot variable
    squareroot *= 100;
    squareroot = (double)((int)squareroot);
    squareroot /= 100;
    cout << squareroot << endl;

   return 0;
}

你做了什么尝试来调试这个问题?好吧,我已经读了半个小时了,但是我找不到错误在哪里。我想这是函数递归出了问题。但是我不太确定我应该怎么做。如果你有调试器的访问权限,你想通过观察executi来遍历程序的执行关于流和流中关键点的变量状态。否则,打印到控制台或日志文件以完成相同的事情。提示:%1没有做你认为它正在做的事情。另外,如果它是家庭作业,请将其标记为这样。我刚刚意识到我是一个白痴。相反,模1总是返回零。它不做任何事情,它对我们没有任何作用“不完整的”。@BenVoigt-true。没有什么用处。你修正的内容比你在介绍性段落中提到的要多。