2011-04-13 50 views
1

這是我的代碼,我試過用Google搜索它,但我可以找到爲什麼我的代碼不正確地轉換數字。但它符合罰款。你能告訴我爲什麼它不工作,我應該怎麼做才能解決它。試圖讓一個C++程序將一個4位數的八進制數轉換爲十進制

#include <iostream> 
using namespace std; 

int main() 
{ 
    char a = 0; 
    char b = 0; 
    char c = 0; 
    char d = 0; 

    cout << "Enter 4 digit octal number "; 
    cin >> a >> b >> c >> d; 

    cout << "Decimal form of that number: " << (a * 512) + (b * 64) + (c * 8) + d << endl; 

    return 0; 

} 
+0

它輸出什麼? – Nija 2011-04-13 01:25:58

回答

5

因爲您將值作爲字符獲取,所以它們可能是您乘以的ascii值。嘗試使用(A-'0 '),(B-'0')等

你也應該驗證輸入,以確保它是一個數字,從0〜7

0

轉換你的價值觀(一,b,c,d)整數,然後相乘。

2

爲什麼不讓標準庫做這項工作?

#include <ios> 
#include <ostream> 
#include <iostream> 

int main() 
{ 
    unsigned n; 
    std::cin >> std::oct >> n; 
    std::cout << n << std::endl; 
} 
相關問題