如何用c语言编写二进制和十进制之间的转换

Python015

如何用c语言编写二进制和十进制之间的转换,第1张

二进制转十进制

n

为输入的二进制数,d用来处理该数。

k为标志位,当k为1时表示输入的数有问题,需要重新输入。

i为每次分解的个位数;j为二进制的权值;m为累计的十进制和;p为输入的数的位数,超过10时,该数越界,需要重新输入,定k=1。

程序如下:

#include

<conio.h>

main()

{

long

int

n,d

int

k,i,j,m,p

do

{

k=0

m=0j=1i=0p=0

printf("\ninput

an

number

only

includes

0

or

1:")

scanf("%ld",&n)

if(n<0)

k=1

d=n

while(d)

{

i=d%10p++

if(i>1

||

p>10)

{k=1break}

m+=i*j

j=j*2

d/=10

}

}

while(k==1

||

m==0)

printf("\n

the

number

is

%d\n",m)

getch()

}

/**

程序功能:求二进制,十进制,八进制

创建人:蒲宇林

创建日期:2007年8月13日

**/

#include

<stdio.h>

void

two()

void

eight()

void

sixteen()

/**主函数**/

void

main()

{

int

select

do

{

printf("0

-

退出,1

-

十进制转二进制,2

-

十进制转八进制,3

-

十进制转十六进制")

scanf("%d",&select)

switch(select)

{

case

1

:

two()

break

//十进制转二进制

case

2

:

eight()

break

//十进制转八进制

case

3

:

sixteen()

break

//十进制转十六进制

default

:

printf("您的输入有误,请重新输入!")

break

}

if(select

==

0)

{

break

}

}while(1)

}

void

two()

{

int

num,

i

int

arr[20]

printf("\n请输入一个十进制数:")

scanf("%d",&num)

for(

i

=

0

1

i++)

//转换为二进制并存入数组

{

arr[i]

=

num

%

2

num

=

num

/

2

if(num

==

0)

{

break

}

}

printf("转换为二进制:")

//打印

for(

i

>=

0

i--

)

{

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

}

printf("\n")

}

void

eight()

{

int

num,

i

int

arr[20]

printf("\n请输入一个十进制数:")

scanf("%d",&num)

for(

i

=

0

1

i++)

//转换为八进制并存入数组

{

arr[i]

=

num

%

8

num

=

num

/

8

if(num

==

0)

{

break

}

}

printf("转换为八进制:")

//打印

for(

i

>=

0

i--

)

{

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

}

printf("\n")

}

void

sixteen()

{

int

num,

i

int

arr[20]

printf("\n请输入一个十进制数:")

scanf("%d",&num)

for(

i

=

0

1

i++)

//转换为二进制并存入数组

{

arr[i]

=

num

%

16

num

=

num

/

16

if(num

==

0)

{

break

}

}

printf("转换为十六进制:")

//打印

for(

i

>=

0

i--

)

{

switch(arr[i])

{

case

10

:

printf("A")

break

case

11

:

printf("B")

break

case

12

:

printf("C")

break

case

13

:

printf("D")

break

case

14

:

printf("E")

break

case

15

:

printf("F")

break

default

:

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

}

}

printf("\n")

}

#include<stdio.h>

main()

{

int c1,c2

c1=300

c2=400

printf("%c %c\n",c1,c2)//因为字符只有8位 这里 c1,c2 会强制转换成char型

// 便只有低八位会显示

// c1%256= 44=0x2c 即是ASCII ','

// c2%256= 144超过ASCII 127的范围,即无相应字符,一律为 '?'

}