关于c++的问题
想做二进制转十进制的,但结果不对,哪位大神能帮忙看看{:5_109:}#include <iostream>
using namespace std;
int main()
{
long long i=0;
int n;
while(getchar()!='\n')
{
cin>>n;
i*=2;
i+=n;
}
cout<<i<<endl;
system("pause");
return 0;
}
你的程序中getchar函数会接收二进制最高位,
然后循环里的cin会接收剩下的部分,
所以最后的输出值是除二进制最高位剩下的部分。
建议参考如下代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
long long s=0;
int i=1;
string str;
cin>>str;
for(auto left=str.rbegin();left!=str.rend();++left)
{
s+=(i*((*left)-48));
i*=2;
}
cout<<s<<endl; int i=1,num=0;
string n;
cin>>n;
int l=n.size();
for(int k=l-1;k>=0;k--)
{
if(n=='0')
i*=2;
else
num+=i;
i*=2;
}
cout<<num<<endl; TOP_LK 发表于 2019-4-26 16:38
你的程序中getchar函数会接收二进制最高位,
然后循环里的cin会接收剩下的部分,
所以最后的输出值是除二 ...
你用逆向迭代器,如果楼主新人不友善吧
页:
[1]