輸入二進制數轉換成十進制數(在cin>>和cin.get()上掉的坑)
題目:輸入一個二進制數轉換成十進制。
題目分析:書上說,在一般情況下,c++的鍵盤輸入可以識別是十進制數、八進制數和十六進制數,因此輸入的二進制數據要作為字符處理。(其實我覺得數字也沒問題吧)。
正確代碼:(自己寫的簡單版,多次犯錯后得出的算是可以正確得到結果的版本)
#include<iostream>
using namespace std;
int main()
{
char bin;
cout << "Binary:" << endl;
cin >> bin; //實際上只讀取了輸入數字中的最左邊第一位
int sum = 0;
while (bin == '0' || bin == '1')
{
sum += (bin - '0'); //累加
cin.get(bin); //獲取下一位數字
if (bin == '0' || bin == '1') //判斷是否存在下一位數字
{
sum *= 2; //一轉換的數據左移一位
}
}
cout <<"Decimal:"<< sum;
system("pause");
}
之前犯錯原因:
不清楚cin>>和cin.get()的用法,在使用了cin>>bin;獲取了二進制數字的輸入后再次使用了cin.get(bin);,實際上導致最左邊的一位數字沒有得到轉換,只轉換了右邊剩下的數字。

浙公網安備 33010602011771號