# include <iostream>
# include <cmath>
using namespace std;
int main()
{
int p;
int n;
int q;
cin>>n;
int r;
r=0;
for (int i=0,n; n>1; i=i+1,n=n/2)
{
p=n%2;
q= p*(pow(10,i));
r=r + q;
}
cout<<r;
system("pause");
return 0;
}
我不应该使用数组。它编译得很好,但是当执行并输入数字时,它不能产生所需的结果。 例如,当输入22时,它给出-2147483648,而期望的输出将是10110。
答案 0 :(得分:1)
你的方式是有限的,并没有转换为二进制
的效率你应该使用字符串,它更有帮助,范围足够大,适用于任何数字
这是我的十进制到二进制代码
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
long long n;
string s,bin;
stack<string> res;
cin>>n;
while(n>0)
{
if(n%2==0)
s='0';
else
s='1';
res.push(s);
n=n/2;
}
while(!res.empty())
{
bin=bin+res.top();
res.pop();
}
cout<<bin<<endl;
return 0;
}
我希望它会对你有所帮助。
答案 1 :(得分:0)
int i=0,n;
应该是
int i=0;
我不知道你以为你在做什么,但你实际上在做的是声明另一个变量n
。由于第二个n
变量没有值,因此其余代码不起作用。
这不是你的代码唯一的问题,但我相信你可以弄明白其余的。