輸入二進制數轉換成十進制數(在cin>>和cin.get()上掉的坑)

題目:輸入一個二進制數轉換成十進制。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

相關文章
相關標籤/搜索