十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#includestdio.h
10多年的黄南州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整黄南州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“黄南州网站设计”,“黄南州网站推广”以来,每个客户项目都认真落实执行。
#define n 20
void change2(int t)
{ //将十进制数转换到存放二进制的数组中
int i;
int b[n]={0};
for(i=0;i20;i++)
{
b[i]=t%2;
t=t/2;
}
for(i=n-1;i=0;i--)
{
printf("%d",b[i]);
}
printf("\n");
}
void main(){
int demo;
printf("请输入一个十进制数:");
scanf("%d",demo);
change2(demo);
}
这个是
递归程序
,程序的意思就是:
十进制转化为2进制,利用辗转除以2取
余数
的
方式
,这个网上有很多,其他比如十进制转
十六进制
也是这个方式,只不过辗转除以16,直到本身变为0,每次相除的余数最后组合成要转换的结果。PKU-一夫
C语言,怎么用递归函数,把输入的一个十进制整数转换成二进制数输出 评论 ┆ 举报
最佳答案此答案由提问者自己选择,并不代表百度知道知识人的观点
回答:w8g8h
学弟
12月21日 09:33 程序的主要思想是:
按位与的特点是,是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。
也就是说,按位与运算有3个对象,分别是两个参与运算的两个数和运算有的结果。这个和小学学习的普通加法一样。如:a+b=c,,a,b,c分别是3个对象。同样的,与运算也是一一样的意思:a b = c.
只不过是与的意思和加法的意思不一样而已。
根据题目要求,我们已经得到了一个参与运算的数据,就是要转换的数,现在我们需要得到转换后的数,根据与运算规则,我们构造一个数,分别和待转换的数进行与运算,得到每一位的值,要么是0,要么是1。
程序如下:
#include stdio.h
int main(void)
{
const int iTimes=sizeof(int) * 8;
int iMask=1;
int x = 12345; 这个就是要转换的数
int x2[iTimes];
int i;
for( i=0 ; iiTimes ; i++ ){
x2[i]=x iMask;
iMask = iMask 1;
printf("%d",iMask);
}
printf("\n(%d)d=",x);
for( i=iTimes -1 ; i =0 ; i-- ){
printf("%d",x2[i] ? 1 : 0 );
}
return 0;
}
揪错 ┆ 评论 ┆ 举报
c语音程序 利用数组,将输入的任一十进制数转换成二进制数。
#include stdio.h
void main(){int n,a[20],i=0;
scanf("%d",n);
while(n)
{a[i] = n%2;
n /= 2;
i++;
}
printf("\n");
for(int j = i - 1;j=0;j--)
printf("%d",a[i]);
}
编写函数,将任意输入的二进制数转换为十进制数
不知道你的二进制数是怎么存的??
假设是存在int array[]数组中吧,或者char array[]数组也所谓
int i;
int result = 0;
for( i= 0; i 数组的长度; i++)
{
result = result * 2 + array[i];
}
上面默认数组的高位从array[0]开始,若低位从array[0]开始:for( i= 数组的长度 - 1; i = 0; i)
如果是char数组处理类似的
PASCAL十进制正整数转换成八进制数,用递归
program pyy;
var
a:integer;
procedure to8(n:integer);
begin
if n=1
then to8(n div 8)
else exit;
write(n mod 8);
end;
begin
readln(a);
to8(a);
readln;
end.
将一个十进制数转换成二进制数,然后用二进制输出拜托各位了 3Q
用位运算 int numb;要输入的数 int i=0x80;2进制是10000000 for(;i!=0;i=1) if(in)printf("1"); else printf("0"); 自己研究一下,没明白的话补充问题我给你详解
java中,用递归的方式实现十进制数转换成二进制数。
你没给函数接口,我就用long型做的返回值,不过差不多,加一句toString就可以转成String
class DecimalToBinary{ public long convert(long decimal){ if(decimal = 2){ return this.convert(decimal/2)*10+decimal%2; }else{ return decimal; } }}public class ConvertDemo{ public static void main(String[] args){ DecimalToBinary toBinary = new DecimalToBinary(); System.out.println("1024d convert to binary is:\t"+toBinary.convert(1024)+"b"); }}
编写函数fun(),将十进制正整数转换成k进制数,并按位输出
/
C-Free 4.1
MinGW 3.4.5
veket的小号
/
#include stdio.h
void DecToK(char *dec, char *kser, int k);
void reverse(char *s);
int main()
{
char a[1024] = "1234";十进制数字的字符串
char b[1024];存放k进制数字的字符数组
DecToK(a, b, 3);转三进制
reverse(b);
printf("%s = %s\n", a, b);
DecToK(a, b, 24);转二十四进制
reverse(b);
printf("%s = %s\n", a, b);
return 0;
}
void DecToK(char *dec, char *kstr, int k)
{
char str[36] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int digit;
char *p = dec;
digit = 0;
while(*p)
{
digit = digit*10 + (*p-'0');
p++;
}
p = kstr;
while(digit)
{
*p = str[digit%k];
digit /= k;
p++;
}
*p = '\0';
}
void reverse(char *s)字符串逆序
{
char *p1 = s;
char *p2 = s;
char temp;
while(*p2)
{
p2++;
}
p2--;
while(p1p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
十进制数转换成二进制数的c语言程序,采用递归与数组的,要怎么做?(详细的)
#includestdio.h
void Switch(int num)
{
int i=0,s;
int y[16]={0};
s=num/2;
y[i]=num%2;
i++;
if(s==1)
{
y[i]=1;
for(i=15;i=0;i--)
{
printf("%d",y[i]);
if(i%4==0)
printf(" ");
}
}
if(s==0)
{
y[i]=0;
for(i=15;i=0;i--)
{
printf("%d",y[i]);
if(i%4==0)
printf(" ");
}
}
else
{
num=s;
Switch(num);
}
}
void main()
{
int n;
printf("pleass input a numble:\n");
scanf("%d",n);
printf("result is :\n");
Switch(n);
}
二进制数1100110转换成十进制整数等于
(1100110)2
=(((((((0*2+1)*2+1)*2+0)*2+0)*2+1)*2+1)*2+0)10
=((((((1*2+1)*2+0)*2+0)*2+1)*2+1)*2+0)10
=(((((3*2+0)*2+0)*2+1)*2+1)*2+0)10
=((((6*2+0)*2+1)*2+1)*2+0)10
=(((12*2+1)*2+1)*2+0)10
=((25*2+1)*2+0)10
=(51*2+0)10
=(102)10
用pascal编程“将正十进制整数转换成二进制"
var n:longint;
s:string;
begin
readln(n);
s:='';
repeat
if n mod 2=0 then s:=s+'0' else s:=s+'1';
n:=n div 2;
until n=0;
writeln(s);
end.