C语言进制换算程序

C语言进制换算程序,第1张

这样看,一个十进制数,比如123,我们如果要把它转成十进制,那行就是这样算

用这个数除以100,然后得1也就是第一位数,然后用这个数减去1100,再拿得到的那个数23除以10,然后得2,23-210=3,再用3/1,就出来了

如果要转成别的进制,只用除以相应该的数就可以了

如转成二进制就除以2^n,2^n-12^0,也就是1,2,4,8,16

十六进制这样1,16,256

程序如下

#include

"stdioh"

#include

"mathh"

void

main()

{

int

n;

int

i,k;

int

tmp,m;

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

scanf("%d",&n);

printf("2

");

for(i=30,k=n;i>=0;i--)

{

tmp=int(pow(2,i));

m=k/tmp;

printf("%d",m);

k=k-mtmp;

}

printf("\n4

");

for(i=15,k=n;i>=0;i--)

{

tmp=int(pow(4,i));

m=k/tmp;

printf("%d",m);

k=k-mtmp;

}

printf("\n8

");

for(i=10,k=n;i>=0;i--)

{

tmp=int(pow(8,i));

m=k/tmp;

printf("%d",m);

k=k-mtmp;

}

printf("\n16

");

for(i=7,k=n;i>=0;i--)

{

tmp=int(pow(16,i));

m=k/tmp;

if(m<10)

printf("%d",m);

else

putchar(m+'A'-10);

k=k-mtmp;

}

printf("\n32

");

for(i=6,k=n;i>=0;i--)

{

tmp=int(pow(32,i));

m=k/tmp;

if(m<10)

printf("%d",m);

else

putchar(m+'A'-10);

k=k-mtmp;

}

putchar('\n');

}

1、首先,定义四个整型变量,保存十进制整数、二进制整数等计算值。

2、给变量i和二进制数赋初值,值为0。

3、接着,输入一个十进制整数。

4、用while语句判断,条件为十进制数是否为零。

5、当十进制数不为零时,对十进制数用2求余,保存在变量d中。

6、十进制数除以2,使数值缩小为原来的二分之一。

7、输出十进制数所对应的二进制数。

8、运行程序,输入任意一个十进制整数,计算机就会输出对应的二进制数。

在这里献丑了!

1将你输入的数通过字符串的方式存储是方便一下的计算的

正如你举得例子,输入137 数组中存入的是 字符型的137 要将

里面的每个字符型的数字转换成数值型的数字就得 p-'0',因为

字符存储时实际存储的是字符的ASC码, 例如 输入 1(字符型)ASCII码为

49 若不减去0的ASC码 就会以49去参加运算

这个while循环是用于数制转换的将八进制转换成10进制,其实就是将8进制数码按权展开,137=18^2+38^1+78^0

2这个while就是这个用处,一步一步看下去,加入输入为137存储为字符137

第一次是将字符型的1减去0的asc码就得到了数值型的1 1本来是最高位应该是但是这里得到的只有系数(姑且叫做系数吧而权为8^0=1),由于后面还有两个数,这样通过循环n=n8+p-'0';将1的权值提升到了8^2,对第二位也类似

3要进行浮点数的进制转换就得找准小数点的位置然后按照类似的方法就可以了

Function cBit(num) '十进制转二进制

cBitstr = ""

If Len(num) > 0 And IsNumeric(num) Then

Do While Not num \ 2 < 1

cBitstr = (num Mod 2) & cBitstr

num = num \ 2

Loop

End If

cBit = num & cBitstr

End Function

Function csDec(num) '二进制转十进制

cDecstr = 0

If Len(num) > 0 And IsNumeric(num) Then

For inum = 0 To Len(num) - 1

cDecstr = cDecstr + 2 ^ inum CInt(Mid(num, Len(num) - inum, 1))

Next

End If

csDec = cDecstr

End Function

Function BcH(num) '二进制转十六进制

BcH = Hex(csDec(num))

End Function

Function HcB(num) '十六进制转二进制

If Len(num) > 0 Then

HcBstr = ""

For i = 1 To Len(num)

Select Case (Mid(num, i, 1))

Case "0": HcBstr = HcBstr & "0000"

Case "1": HcBstr = HcBstr & "0001"

Case "2": HcBstr = HcBstr & "0010"

Case "3": HcBstr = HcBstr & "0011"

Case "4": HcBstr = HcBstr & "0100"

Case "5": HcBstr = HcBstr & "0101"

Case "6": HcBstr = HcBstr & "0110"

Case "7": HcBstr = HcBstr & "0111"

Case "8": HcBstr = HcBstr & "1000"

Case "9": HcBstr = HcBstr & "1001"

Case "A": HcBstr = HcBstr & "1010"

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

Case "C": HcBstr = HcBstr & "1100"

Case "D": HcBstr = HcBstr & "1101"

Case "E": HcBstr = HcBstr & "1110"

Case "F": HcBstr = HcBstr & "1111"

End Select

Next

End If

HcB = HcBstr

End Function

Function OcB(num) '八进制转二进制

OcBstr = ""

If Len(num) > 0 And IsNumeric(num) Then

For i = 1 To Len(num)

Select Case (Mid(num, i, 1))

Case "0": OcBstr = OcBstr & "000"

Case "1": OcBstr = OcBstr & "001"

Case "2": OcBstr = OcBstr & "010"

Case "3": OcBstr = OcBstr & "011"

Case "4": OcBstr = OcBstr & "100"

Case "5": OcBstr = OcBstr & "101"

Case "6": OcBstr = OcBstr & "110"

Case "7": OcBstr = OcBstr & "111"

End Select

Next

End If

OcB = OcBstr

End Function

Function BcO(num) '二进制转八进制

BcO = Oct(csDec(num))

End Function

Function OcD(num) '八进制转十进制

OcD = csDec(OcB(num))

End Function

Function HcD(num) '十六进制转十进制

HcD = csDec(HcB(num))

End Function

Function HcO(num) '十六进制转八进制

HcO = Oct(HcD(num))

End Function

Function OcH(num) '八进制转十六进制

OcH = Hex(OcD(num))

End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then

KeyAscii = 8

ElseIf KeyAscii < 48 Or KeyAscii > 49 Then

KeyAscii = 0

End If

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then

KeyAscii = 8

ElseIf KeyAscii < 48 Or KeyAscii > 55 Then

KeyAscii = 0

End If

End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then

KeyAscii = 8

ElseIf KeyAscii < 48 Or KeyAscii > 57 Then

KeyAscii = 0

End If

End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then

KeyAscii = 8

ElseIf KeyAscii = 65 Then

KeyAscii = 65

ElseIf KeyAscii = 66 Then

KeyAscii = 66

ElseIf KeyAscii = 67 Then

KeyAscii = 67

ElseIf KeyAscii = 68 Then

KeyAscii = 68

ElseIf KeyAscii = 69 Then

KeyAscii = 69

ElseIf KeyAscii = 70 Then

KeyAscii = 70

ElseIf KeyAscii = 97 Then

KeyAscii = 65

ElseIf KeyAscii = 98 Then

KeyAscii = 66

ElseIf KeyAscii = 99 Then

KeyAscii = 67

ElseIf KeyAscii = 100 Then

KeyAscii = 68

ElseIf KeyAscii = 101 Then

KeyAscii = 69

ElseIf KeyAscii = 102 Then

KeyAscii = 70

ElseIf KeyAscii < 48 Or KeyAscii > 57 Then

KeyAscii = 0

End If

End Sub

函数和输入都帮你弄好了,你只要弄按钮就行了。

#include "stdioh"

int main()

{

   int n;

   int i=0,j;

   char str[100]={0};

   char output[100]={0};

   printf("请输入一个整数:");

   scanf("%d",&n);

   while(n)

   {

         str[i]=n%2+'0';

         n=n/2;

         i++;

   }

   for(j=0;j<i;j++)

       output[j]=str[i-1-j];

   printf("该整数的二进制表示为:%s\n",output);

 

}

以上就是关于C语言进制换算程序全部的内容,包括:C语言进制换算程序、C++ 编写一个程序,将用户输入的十进制整数转换成任意进制的数。、C语言的进制转换程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9687157.html

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

发表评论

登录后才能评论

评论列表(0条)

保存