C++ 计算一个数的平方根的程序。
我必须做一个程序,它接受一个数字并输出它的平方根。Ex-45->3√5.我做了一个程序,但它只返回我输入的数字。非常感谢您的帮助。 这是我的代码->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(
#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。没有什么用处。你修正的内容比你在介绍性段落中提到的要多。