題目:輸入一個二進制數轉換成十進制。ios
題目分析:書上說,在通常狀況下,c++的鍵盤輸入能夠識別是十進制數、八進制數和十六進制數,所以輸入的二進制數據要做爲字符處理。(其實我以爲數字也沒問題吧)。c++
正確代碼:(本身寫的簡單版,屢次犯錯後得出的算是能夠正確獲得結果的版本)spa
#include<iostream>
using namespace std;
int main()
{
char bin;
cout << "Binary:" << endl;
cin >> bin; //實際上只讀取了輸入數字中的最左邊第一位code
int sum = 0;blog
while (bin == '0' || bin == '1')
{
sum += (bin - '0'); //累加
cin.get(bin); //獲取下一位數字
if (bin == '0' || bin == '1') //判斷是否存在下一位數字
{
sum *= 2; //一轉換的數據左移一位
}ci
}
cout <<"Decimal:"<< sum;
system("pause");
}get
以前犯錯緣由:io
不清楚cin>>和cin.get()的用法,在使用了cin>>bin;獲取了二進制數字的輸入後再次使用了cin.get(bin);,實際上致使最左邊的一位數字沒有獲得轉換,只轉換了右邊剩下的數字。class