这是从课本中摘录出来的代码,萌新的网络笔记~~~
代码主要思想是采用移位方式处理数据:读到1时 total+1 ,此时观察下一位是否仍有数字,若有则 total*2。
如:
输入101101
则最高位的1在被加入total后经历了 1*2*2*2*2*2=32
第二位的0被去除
第三位的1在被加入total后经历了1*2*2*2=8
同理
第四位的1为1*2*2=4
最后一位的1为1
即最后结果为32+8+4+1=45
————————————————
也可以用一条式子表示:
(((((1*2+0)*2+1)*2+1)*2+0)*2+1)=45
代码:
#include<iostream>
using namespace std;
int main()
{
int total = 0;
char ch;
do
{
cin.get(ch);
} while (ch != '0' && ch != '1');
do
{
total+=ch-'0'; //这里应该是类型转换了,用if也是可以实现的
cin.get(ch);
if (ch == '1' || ch == '0') total *= 2;
}while (ch == '0' || ch == '1');
cout << total;
}