求一个数值转换的C语言程序,能够实现整数和小数部分的转换。谢谢了!

求一个数值转换的C语言程序,能够实现整数和小数部分的转换。谢谢了!,第1张

#include <stdio.h>

void main()

{

double x//其中x表示输入的数

int a //表示实数的整数部分

double b //表示整数的小数部分

printf("请输入一个实数:")//提消雀碧示岁嫌输入一个数

scanf("%lf",&x)

a = (int)x

b = x-a

printf("x整数部分为:%d,小数部分为:%lf \n"拿举,a,b)

}

两个进制(其中之一为10进制)之间的互转(手工计算方法)

以2,10进制互转为例,其他请举一反三:

二进制数1101转十进制:

1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的罩凯零次幂=8+4+0+1=13

附加一个八进制转十进制的例子吧:

507(八进制转10进制):

5×8的2次幂+0×8的1次幂+7×8的0次幂=

5×64+0×8+7×1=327(10进制)

以上是小进制向大进制的转换,从2->10和8->10,下面说说大进制向小进制的转换。(方法是相除去余)

10进制327转八进制:

327/8 = 40 余数为7

40/8 = 5 余数为0

于是八进制数为507(第一位5是最后的商)

10进制13转2进制:

13/2 = 6 余数为1

6/2 = 3 余数为0

3/2 = 1 余数为物李唤1

所以对应的扰纳二进制数为1101(第一位1是最后的商)

再测试一下,把307(10进制)转换为16进制:

307/16 = 19 余数为3

19/16 = 1 余数为3

对应的16进制数应该是:133

再把133转回10进制:

1×16的2次幂+3×16的1次幂+3×16的零次幂

=256+48+3=307

这是程序:

#include <stdio.h>

#define BASE 8 /*要转换成几进制数/*

#define DIGIT 100 /*转换数的位数/*

int main(void)

{

int i,input

int x[DIGIT]

printf("Please enter(Enter q to quit)")

while(scanf("%d",&input)==1)

{

for (i=0input!=0input/=BASE)

x[i]%=input

for (i<0i--)

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

}

return 0

}

VB进猛友链告灶制转换大全

' 用途:将十进制转化为二 进 制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_BIN(二 进 制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)

Public Function DEC_to_BIN(Byval Dec As Long) As String

DEC_to_BIN = ""

Do While Dec >0

DEC_to_BIN = Dec Mod 2 &DEC_to_BIN

Dec = Dec \ 2

Loop

End Function

' 用途:将二 进 制转化为十进制

' 输入:Bin(二 进 制数)

' 输入数据类型:枝孙String

' 输出:BIN_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为1111111111111111111111111111111(31个1),输出最大数为2147483647

Public Function BIN_to_DEC(ByVal Bin As String) As Long

Dim i As Long

For i = 1 To Len(Bin)

BIN_to_DEC = BIN_to_DEC * 2 + Val(Mid(Bin, i, 1))

Next i

End Function

' 用途:将十六进制转化为二 进 制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_BIN(二 进 制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function HEX_to_BIN(ByVal Hex As String) As String

Dim i As Long

Dim B As String

Hex = UCase(Hex)

For i = 1 To Len(Hex)

Select Case Mid(Hex, i, 1)

Case "0": B = B &"0000"

Case "1": B = B &"0001"

Case "2": B = B &"0010"

Case "3": B = B &"0011"

Case "4": B = B &"0100"

Case "5": B = B &"0101"

Case "6": B = B &"0110"

Case "7": B = B &"0111"

Case "8": B = B &"1000"

Case "9": B = B &"1001"

Case "A": B = B &"1010"

Case "B": B = B &"1011"

Case "C": B = B &"1100"

Case "D": B = B &"1101"

Case "E": B = B &"1110"

Case "F": B = B &"1111"

End Select

Next i

While Left(B, 1) = "0"

B = Right(B, Len(B) - 1)

Wend

HEX_to_BIN = B

End Function

' 用途:将二 进 制转化为十六进制

' 输入:Bin(二 进 制数)

' 输入数据类型:String

' 输出:BIN_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function BIN_to_HEX(ByVal Bin As String) As String

Dim i As Long

Dim H As String

If Len(Bin) Mod 4 <>0 Then

Bin = String(4 - Len(Bin) Mod 4, "0") &Bin

End If

For i = 1 To Len(Bin) Step 4

Select Case Mid(Bin, i, 4)

Case "0000": H = H &"0"

Case "0001": H = H &"1"

Case "0010": H = H &"2"

Case "0011": H = H &"3"

Case "0100": H = H &"4"

Case "0101": H = H &"5"

Case "0110": H = H &"6"

Case "0111": H = H &"7"

Case "1000": H = H &"8"

Case "1001": H = H &"9"

Case "1010": H = H &"A"

Case "1011": H = H &"B"

Case "1100": H = H &"C"

Case "1101": H = H &"D"

Case "1110": H = H &"E"

Case "1111": H = H &"F"

End Select

Next i

While Left(H, 1) = "0"

H = Right(H, Len(H) - 1)

Wend

BIN_to_HEX = H

End Function

' 用途:将十六进制转化为十进制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为7FFFFFFF,输出的最大数为2147483647

Public Function HEX_to_DEC(ByVal Hex As String) As Long

Dim i As Long

Dim B As Long

Hex = UCase(Hex)

For i = 1 To Len(Hex)

Select Case Mid(Hex, Len(Hex) - i + 1, 1)

Case "0": B = B + 16 ^ (i - 1) * 0

Case "1": B = B + 16 ^ (i - 1) * 1

Case "2": B = B + 16 ^ (i - 1) * 2

Case "3": B = B + 16 ^ (i - 1) * 3

Case "4": B = B + 16 ^ (i - 1) * 4

Case "5": B = B + 16 ^ (i - 1) * 5

Case "6": B = B + 16 ^ (i - 1) * 6

Case "7": B = B + 16 ^ (i - 1) * 7

Case "8": B = B + 16 ^ (i - 1) * 8

Case "9": B = B + 16 ^ (i - 1) * 9

Case "A": B = B + 16 ^ (i - 1) * 10

Case "B": B = B + 16 ^ (i - 1) * 11

Case "C": B = B + 16 ^ (i - 1) * 12

Case "D": B = B + 16 ^ (i - 1) * 13

Case "E": B = B + 16 ^ (i - 1) * 14

Case "F": B = B + 16 ^ (i - 1) * 15

End Select

Next i

HEX_to_DEC = B

End Function

' 用途:将十进制转化为十六进制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为7FFFFFFF

Public Function DEC_to_HEX(Dec As Long) As String

Dim a As String

DEC_to_HEX = ""

Do While Dec >0

a = CStr(Dec Mod 16)

Select Case a

Case "10": a = "A"

Case "11": a = "B"

Case "12": a = "C"

Case "13": a = "D"

Case "14": a = "E"

Case "15": a = "F"

End Select

DEC_to_HEX = a &DEC_to_HEX

Dec = Dec \ 16

Loop

End Function

' 用途:将十进制转化为八进制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为17777777777

Public Function DEC_to_OCT(Byval Dec As Long) As String

DEC_to_OCT = ""

Do While Dec >0

DEC_to_OCT = Dec Mod 8 &DEC_to_OCT

Dec = Dec \ 8

Loop

End Function

' 用途:将八进制转化为十进制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为17777777777,输出的最大数为2147483647

Public Function OCT_to_DEC(ByVal Oct As String) As Long

Dim i As Long

Dim B As Long

For i = 1 To Len(Oct)

Select Case Mid(Oct, Len(Oct) - i + 1, 1)

Case "0": B = B + 8 ^ (i - 1) * 0

Case "1": B = B + 8 ^ (i - 1) * 1

Case "2": B = B + 8 ^ (i - 1) * 2

Case "3": B = B + 8 ^ (i - 1) * 3

Case "4": B = B + 8 ^ (i - 1) * 4

Case "5": B = B + 8 ^ (i - 1) * 5

Case "6": B = B + 8 ^ (i - 1) * 6

Case "7": B = B + 8 ^ (i - 1) * 7

End Select

Next i

OCT_to_DEC = B

End Function

' 用途:将二 进 制转化为八进制

' 输入:Bin(二 进 制数)

' 输入数据类型:String

' 输出:BIN_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function BIN_to_OCT(ByVal Bin As String) As String

Dim i As Long

Dim H As String

If Len(Bin) Mod 3 <>0 Then

Bin = String(3 - Len(Bin) Mod 3, "0") &Bin

End If

For i = 1 To Len(Bin) Step 3

Select Case Mid(Bin, i, 3)

Case "000": H = H &"0"

Case "001": H = H &"1"

Case "010": H = H &"2"

Case "011": H = H &"3"

Case "100": H = H &"4"

Case "101": H = H &"5"

Case "110": H = H &"6"

Case "111": H = H &"7"

End Select

Next i

While Left(H, 1) = "0"

H = Right(H, Len(H) - 1)

Wend

BIN_to_OCT = H

End Function

' 用途:将八进制转化为二 进 制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_BIN(二 进 制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function OCT_to_BIN(ByVal Oct As String) As String

Dim i As Long

Dim B As String

For i = 1 To Len(Oct)

Select Case Mid(Oct, i, 1)

Case "0": B = B &"000"

Case "1": B = B &"001"

Case "2": B = B &"010"

Case "3": B = B &"011"

Case "4": B = B &"100"

Case "5": B = B &"101"

Case "6": B = B &"110"

Case "7": B = B &"111"

End Select

Next i

While Left(B, 1) = "0"

B = Right(B, Len(B) - 1)

Wend

OCT_to_BIN = B

End Function

' 用途:将八进制转化为十六进制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function OCT_to_HEX(ByVal Oct As String) As String

Dim Bin As String

Bin = OCT_to_BIN(Oct)

OCT_to_HEX = BIN_to_HEX(Bin)

End Function

' 用途:将十六进制转化为八进制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function HEX_to_OCT(ByVal Hex As String) As String

Dim Bin As String

Hex = UCase(Hex)

Bin = HEX_to_BIN(Hex)

HEX_to_OCT = BIN_to_OCT(Bin)

End Function


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

原文地址:https://54852.com/yw/8214524.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存