题目:输入一个二进制数转换成十进制。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