这样看,一个十进制数,比如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语言的进制转换程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)