c语言实现十进制转换二进制

如果通过算法实现十进制对二进制的转换,十进制对八进制可以在输出格式的时候加上%o 而不能对二进制进行转换.请帮忙写个十进制对二进制进行转换的c语言程序.

思路:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

参考代码:

#include<stdio.h>  
int main() 
{  
int a,s[20],i=0,rem;  
printf("请输入整数:\n");   
scanf("%d",&a);   
while(a){   
rem=a%2;   
a=a/2;   
s[i++]=rem;
}  
printf("输出的二进制:");  
while(i>0)   
printf("%d",s[--i]);  
printf("\n"); 
return 0;
}
/*
输出: 
请输入整数:
10
输出的二进制:1010
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-26
二进制——>十进制

#include<iostream>
using namespace std;
int main()
{
void pb(int n);
int n;
cin>>n;
pb(n);
return 0;
}
void pb(int n)
{
if(n!=0)
{
pb(n/2);
putchar('0'+n%2);
}
}

十进制——>二进制
#include<stdio.h>
int main()
{
int n;
int i;
char a;
scanf("%d",&n);
getchar();
while(n--)
{
i=0;
while((a=getchar())!='\n')
{
i=i*2+(a-48);
}
printf("%d\n",i);
}
return 0;
}本回答被提问者采纳
第2个回答  2020-12-10

C语言_010_二进制转十进制_上

第3个回答  2012-03-26
#include<iostream>
#include<stack>
#include<string>
using namespace std;
string zhuanhuan(int num,int base)
{
string digitChar="0123456789" ,numStr= "";
stack<char>stk;
do{
stk.push(digitChar[num%base]);
num /= base;
}while(num!=0);
while(!stk.empty())
{
numStr += stk.top();
stk.pop();
}
return numStr;
}
int main()
{
int m , n;
cout<< "请输入要转换的数字:" ;
cin >> m;
cout<< "请输入要转换的进制:";
cin >> n;
cout << "将"<< m << "转换成" << n << "进制后为:" ;
cout << zhuanhuan(m,n) << endl;;
system("pause");
return 0;
}
以上代码能实现任意进制之间的转换!希望对你有帮助!!本回答被网友采纳
第4个回答  2012-03-26
void convert(unsigned int indata, char* outdata)
{
int i;
for(i= 8*sizeof(unsigned int); i>= 0 ; i--)
{
if(indata & (1 << i)) *outdata++ = '1';
else *outdata++ = '0';
}
*outdata = 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网