wujm 发表于 2019-4-25 20:41:27

关于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;
}

TOP_LK 发表于 2019-4-25 20:41:28

你的程序中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;

emmmmmmmmmmm 发表于 2019-4-26 15:07:31

      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;

C的user 发表于 2019-4-27 07:52:38

TOP_LK 发表于 2019-4-26 16:38
你的程序中getchar函数会接收二进制最高位,
然后循环里的cin会接收剩下的部分,
所以最后的输出值是除二 ...

你用逆向迭代器,如果楼主新人不友善吧
页: [1]
查看完整版本: 关于c++的问题