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
}
inthextodec(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.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)