2013-04-02 8 views
0

我必須寫一個main()例程來測試的以下測試情況的​​結果:功能國

功率(8,2)

功率(3,3)

功率( 2,10)

使用cout在屏幕上顯示計算值。 這是我迄今所做的,但它不是我

#include <iostream> 
#include <cmath> 

using namespace std; 

int pwr (int&, int); 

int main() 
{ 
int m, n; 
cout << "Enter two positive integers;"; 
cin >> m >> n; 
cout << endl << "The power is " << pwr(m,n) << endl; 
return 0; 
} 

int power (int m, int n) 
{ 
if (n<=1) 
    return m; 
else 
    return m * power (m, n-1); 
} 
+1

不工作的手段絕對沒有。 – chris

+2

'int pwr(int&,int)'被聲明但從未定義過。 'int power(int m,int n)'是已定義但從未使用的。 – Mankarse

+0

Mankarse和宋王都已經給你答案。我假設這是作業。嘗試並輸入一個字符而不是數字並查看輸出。 – XanderLynn

回答

0
  1. 沒有必要列入cmath
  2. 函數的聲明和定義不匹配int pwr (int&, int) VS int power (int m, int n)(名稱不匹配和不匹配參數)
  3. 遞歸調用函數return m * power (m, n-1)應該是正確的或者pwrpower
  4. 使用一些有意義的函數名稱和變量名稱。
  5. 使用縮進和括號使您的代碼清晰。

#include <iostream> 

using namespace std; 
int getPower(int, int); 

int main() 
{ 
    int value, power; 
    cout << "Enter two positive integers;"; 
    cin >> value >> power; 
    cout << "The power is " << getPower(value,power) << endl; 
    return 0; 
} 

int getPower (int value, int power) 
{ 
    if (power<=1){ 
     return value; 
    } 
    else{ 
     return value * getPower (value, power-1); 
    } 
} 
2

工作是int pwr (int&, int);應該是int power (int m, int n)

也許代碼應該是這樣的?

#include <iostream> 
#include <cmath> 

using namespace std; 

int pwr (int, int); 

int main() 
{ 
int m, n; 
cout << "Enter two positive integers;"; 
cin >> m >> n; 
cout << endl << "The power is " << pwr(m,n) << endl; 
return 0; 
} 

int pwr (int m, int n) 
{ 
if (n<=1) 
    return m; 
else 
    return m * pwr (m, n-1); 
} 
+0

如果你使用C++ 11(Visual Studio 2015或更新版本),也許你可以通過使用constexpr甚至模板來打動你的老師。在這裏尋找另一種做你想做的事情的方法......另外,請在提問前嘗試STFG。不要用一般問題阻塞命名空間,對於其他人來說,長期來說是一個很大的幫助。 ;-) – Kupto

2

你聲明的功能

int pwr (int&, int); 

,但你將它定義爲

int power (int m, int n) 

所以編譯器無法發現裏面main功能pwr

函數定義更改爲以下:

int pwr(int m, int n) 
{ 
    if (n<=1) 
     return m; 
    else 
     return m * pwr (m, n-1); 
} 

既然你正在處理int S,你不需要通過引用傳遞。