1

我必须编写一个程序,它接受一个数字并输出它的平方根。例如 - 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;
}
4

2 回答 2

2

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

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

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

5/(5*5) = 5/25 = 0

同样的事情也适用于% 1. int 总是整数,所以修改 1 总是返回 0。

于 2012-04-14T03:53:52.280 回答
-2

这里的问题是使用正确的算法,那就是你需要在你的 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;
}
于 2013-05-31T12:54:09.487 回答