请帮我看下这个C++程序

来源:百度知道 编辑:UC知道 时间:2024/09/20 04:01:15
#include <iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a;
while(a>0){
b=a%2;
if(b=1) c=0;
else c=1;
cout<<c;
a/=2;
}
cout<<endl;
return 0;
}
请大家帮我看下这个十进制转化为二进制的程序哪儿错了,然后请给我改下哈,是改而不是写个新的,因为我还在学习阶段好多东西看不懂的。谢谢大家了啊
谢谢大家,是我马虎了,应该把“=”号变为“==”号,可这样过来还是有问题啊,怎么弄呢

#include<iostream>
#include <iostream>
using namespace std;
int main()
{
int a,b,c[20];
int n=0;
cin>>a;
while(a>1)
{
b=a%2;
if(b==1)
c[n]=1;
else
c[n]=0;
a=a/2;
n++;
}
if(a%2==0)
{
c[n]=0;
}
if(a%2==1)
{
c[n]=1;
}
for(int i=n;i>=0;i--)
{
cout<<c[i];
}
cout<<endl;
return 0;
}

你的错误很很多啊,首先你一个一个挨着打印,你的2进制数是反得,而且,
if(b=1) c=0;//应是b==1,如果是b=1认为的是b是存在的,而且这里的c应该等于1
else c=1;//这里的c应该为0
cout<<c;
作为初学者,你还是把缩进写好吧,一句代码一行,这个是习惯问题,对你以后的工作有帮助

b = 1 是赋值 永远为真,而非判断。

另外,输入的整数除以2,首先得到的余数是二进制的 低位,余数倒级联,所以输出时只要将余数反序输出就可得到正确的二进制数。

你只是把0 和 1转置了。

简单易想的方法:
#include <iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a;

int num[20],i =