【发布时间】:2018-07-02 19:01:59
【问题描述】:
我正在编写一个简单的代码,以根据用户输入获取一个数字和一个幂,并使用函数将数字与该幂平方。但是,在尝试编译代码时,我遇到了多个错误。这是代码:
#include <iostream>
using namespace std;
double power(double& n1, sq)
{
for (int i = 0; i < sq; i++) {
n1* n1;
}
return n1;
}
int main()
{
double power(double&);
double num1, square;
cout << "Enter a number IMMEDIATLY: ";
cin >> num1;
cout << "\nEnter a power: ";
cin >> square;
power();
cout << num1 << endl;
return 0;
}
以下是我收到的错误:
||=== Build: Debug in practice (compiler: GNU GCC Compiler) ===|
|5|error: 'sq' has not been declared|
In function 'double power(double&, int)':|
|6|error: 'sq' was not declared in this scope|
|7|warning: statement has no effect [-Wunused-value]|
In function 'int main()':|
|22|error: too few arguments to function 'double power(double&)'|
|15|note: declared here|
|17|warning: unused variable 'ans' [-Wunused-variable]|
||=== Build failed: 3 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
任何有关如何修复这些错误的帮助或说明将不胜感激,因为我已经被难住了一段时间。谢谢!
编辑:所以我已将 square 解析为 int 并将变量初始化为 power() (正如你们所说),但现在代码产生了不正确的答案作为输出(任何大于平方数字都会产生不正确的输出)。
#include <iostream>
using namespace std;
double power(double& n1, int& sq) {
for (int i=2; i<=sq; i++) {
n1*=n1;
}
return n1;
}
int main()
{
double power(double& n1, int& sq);
double num1;
int square;
cout << "Enter a number IMMEDIATLY: ";
cin >> num1;
cout << "\nEnter a power: ";
cin >> square;
power(num1, square);
cout << num1 << endl;
return 0;
}
【问题讨论】:
-
你需要在这里指定
sq的类型(如果你真的想给你的函数传递一个sq参数):double power(double& n1, sq) -
double power(double&);与之前的签名不符。 -
power();您忘记将 1 或 2 个参数传递给power()。由于函数签名的不同,我说 1 或 2。你必须先解决这个问题。 -
sq可能应该是一个整数。 -
n1* n1;什么都不做。你的意思可能是n1 *= n1;
标签: c++ function codeblocks