能够进行二,八,十,十六进制之间的转化。
#include <stdio.h>
#include <string.h>
void turn1()
{
int a,b[30],c,i=0,d;
printf("请输入十进制数:");
scanf("%d",&a);
while(a!=0)
{
b[i]=a%2;
c=a/2;
a=c;
i++;
}
printf("转化为二进制为:");
while(i>0)
printf("%d",b[--i]);
printf("\n");
}
void turn2()
{
int a,b[30],c,i=0,d;
printf("请输入十进制数:");
scanf("%d",&a);
while(a!=0)
{
b[i]=a%8;
c=a/8;
a=c;
i++;
}
printf("转化为八进制为:");
while(i>0)
printf("%d",b[--i]);
printf("\n");
}
void turn3()
{
int a,b[30],c,i=0,d;
printf("请输入十进制数:");
scanf("%d",&a);
while(a!=0)
{
b[i]=a%16;
c=a/16;
a=c;
i++;
}
printf("转化为十六进制为:");
while(i>0)
{
d=b[--i];
if(d==10)
printf("A");
else
if(d==11)
printf("B");
else
if(d==12)
printf("C");
else
if(d==13)
printf("D");
else
if(d==14)
printf("E");
else
if(d==15)
printf("F");
else
printf("%d",d);
}
printf("\n");
}
void turn4()
{
char a[30]={0};
int n ,j,i,sum=0,t=0,p=1;
printf("请输入一个二进制数:");
scanf("%s",a);
n=strlen(a);
for(i=n-1;i>=0;i--)
{
p=1;
t=(a[i]-48);
if(i==n-1)
p=1;
else
for(j=0;j<n-i-1;j++)
p=p*2;
sum+=t*p;
}
printf("转化为十进制为:%d",sum);
}
void turn5()
{
char a[30]={0};
int n ,j,i,sum=0,t=0,p=1;
printf("请输入一个八进制数:");
scanf("%s",a);
n=strlen(a);
for(i=n-1;i>=0;i--)
{
p=1;
t=(a[i]-48);
if(i==n-1)
p=1;
else
for(j=0;j<n-i-1;j++)
p=p*8;
sum+=t*p;
}
printf("转化为十进制为:%d",sum);
}
void turn6()
{
int a,b[30],c,i=0,d;
printf("请输入十六进制数:");
scanf("%x0",&a);
while(a!=0)
{
b[i]=a%10;
c=a/10;
a=c;
i++;
}
printf("转化为十进制数为:");
while(i>0)
printf("%d",b[--i]);
}
void main()
{
int choice,a;
do{
printf("\t-------------------进制数转换-----------------\n");
printf("\t-------------0. 退出--------------------------\n");
printf("\t-------------1. 十进制转二进制----------------\n");
printf("\t-------------2. 十进制转八进制----------------\n");
printf("\t-------------3. 十进制转十六进制--------------\n");
printf("\t-------------4. 二进制转十进制----------------\n");
printf("\t-------------5. 八进制转十进制----------------\n");
printf("\t-------------6. 十六进制转十进制----------------\n");
printf("\n\n请输入您的选择:\t");
scanf("%d",&choice);
switch(choice)
{
case 0:break;
case 1:turn1();break;
case 2:turn2();break;
case 3:turn3();break;
case 4:turn4();break;
case 5:turn5();break;
case 6:turn6();break;
default:printf("\n选项无效!\n");
}
printf("是否继续!!(继续按1,退出按0):");
scanf("%d",&a);
}while(a==1);
}