2015-04-01 274 views
2

這裏是我的代碼,當main()中的確切代碼產生正確的答案時,我無法弄清楚爲什麼它不起作用。分配是將二進制數轉換爲十進制數。C++函數沒有返回值

#include <iostream> 
#include <cstdlib> 
#include "std_lib_facilities.h" 
using namespace std; 
int binaryCon(int biNum); 
int main() 
{ 
    int num, bin, Bnum; 
    cout << "Enter the binary number(1s and 0s) : "; 
    cin >> num; 
    bin = num; 
    Bnum = binaryCon(num); 
    cout << "The decimal equivalent of " << bin << " : " << Bnum << endl; 
} 
    int binaryCon(int biNum) 
{ 
    long dec = 0, rem = 0, base = 1; 
    enter code here`while (biNum > 0) 
    rem = biNum % 10; 
    dec = dec + rem * base; 
    base = base * 2; 
    biNum = biNum/10; 

    return biNum; 
} 
+0

我不熟悉visual-C++,但我的猜測是你需要移動binaryCon()之前比main()函數。 – TimeString 2015-04-01 04:58:02

+0

@TimeString有一個前向聲明,所以這不是問題。問題出在代碼中。 – 2015-04-01 04:59:19

+0

它應該返回的東西。它返回什麼價值?你在while循環中不使用''''''。它的循環無限。 – Himanshu 2015-04-01 04:59:29

回答

0

校正代碼:

#include <iostream> 
#include <cstdlib> 
using namespace std; 
int binaryCon(int biNum); 
int main() 
{ 
    int num, bin, Bnum; 
    cout << "Enter the binary number(1s and 0s) : "; 
    cin >> num; 
    bin = num; 
    Bnum = binaryCon(num); 
    cout << "The decimal equivalent of " << bin << " : " << Bnum << endl; 
    getchar(); 
    return 0; 
} 
int binaryCon(int biNum) 
{ 
    long dec = 0, rem = 0, base = 1; 
    while (biNum > 0){ 
     rem = biNum % 10; 
     dec = dec + rem * base; 
     base = base * 2; 
     biNum = biNum/10; 
    } 
    return dec; 
} 
0

至於你是不是在你的while循環使用{}可能是其在無限循環下去。作爲其工作這一行只

while (biNum > 0) 
    rem = biNum % 10; // running this line infinite as `biNum > 0` 

使用

while (biNum > 0){ 
    rem = biNum % 10; 
    dec = dec + rem * base; 
    base = base * 2; 
    biNum = biNum/10; 
} 
0

也許這?

while (biNum > 0) 
{ 
    rem = biNum % 10; 
    dec = dec + rem * base; 
    base = base * 2; 
    biNum = biNum/10; 
} 
0

INT主()或者int主(INT的argc,焦炭** argv的)必須返回一個值。如果您返回0,則表示代碼沒有問題。另一個數字1,2等意味着有一個錯誤。(返回的數字是錯誤號碼)