C语言,编一程序用递归函数,把输入的一个十进制整数转换成二进制数输出

C语言,编一程序用递归函数,把输入的一个十进制整数转换成二进制数输出,第1张

#include<stdio.h>中歼

void f(int n)

{

if(n) f(n/2)

else return

printf("世培运%d",n%2)

}

int main()

{

int n

while(1)

{

scanf("%d",&n)

if(n<0) break

if(n==0) printf("0"搜梁)

f(n)

printf("\n")

}

return 0

}

int

hextodec(char

*s)//调用时实参必须分配有空间

{

static

int

m

int

n=strlen(s)

if(*s>='A'&&*s<='Z')//十六进制字符串需大写

m+=(*s-'A'+10)*pow(16,n-1)

else

m+=(*s-'0')*pow(16,n-1)

if(n==1)

return

m

else

hextodec(s+1)//递归调用

}

其实这个进制转换不用递归更好写,脊扮效率更春枣高。你的问题补充没看懂。读取的字符串含有非法字符,这个你自己再写一个格式化成标准十六进制的字符串函数,扒野拆就行了。

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 i<iTimes 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 - 1j>=0j--)

printf("%d",a[i])

}

编写函数,将任意输入的二进制数转换为十进制数

不知道你的二进制数是怎么存的??

假设是存在int array[]数组中吧,或者char array[]数组也所谓

int i

int result = 0

for( i= 0i <数组的长度i++)

{

result = result * 2 + array[i]

}

上面默认数组的高位从array[0]开始,若低位从array[0]开始:for( i= 数组的长度 - 1i >= 0i)

如果是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=0x802进制是10000000 for(i!=0i>>=1) if(i&n)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(p1<p2)

{

temp = *p1

*p1 = *p2

*p2 = temp

p1++

p2--

}

}

十进制数转换成二进制数的c语言程序,采用递归与数组的,要怎么做?(详细的)

#include<stdio.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=15i>=0i--)

{

printf("%d",y[i])

if(i%4==0)

printf(" ")

}

}

if(s==0)

{

y[i]=0

for(i=15i>=0i--)

{

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.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12514546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存