因为逻辑上很简单,只是部分的转换用了函数而已。要了解,查一下MSDN即可。这里就给你所有的源代码,看就明白了。
//////////////////////////////////////代码段//////////////////////////////////////////////
#include "stdio.h"
#include <stdlib.h>
#include <malloc.h>
void des(void);
void sel(void);
void tentosixteen(void);
void tentoeight(void);
void tentotwo(void);
void sixteentoten(void);
void eighttoten(void);
void sixteentotwo(void);
void eighttotwo(void);
void twotoeight(void);
void twotosixteen(void);
void twototen(void);
void eighttosixteen(void);
void sixteentoeight(void);
void main()
{
des();
sel();
system("pause");
}
void des(void)
{
printf("******************************--进制转换器--***********************************\n\n");
printf("************************************************-制作人:王定雄-***************\n");
printf("** ---使用说明--- **\n");
printf("** 1.选择转换模式号,按回车键确定。 **\n");
printf("** 2.输入待转换的数字,按回车键确定。 **\n");
printf("** 3.得到转换结果 **\n");
printf("************************************************-制作人:王定雄-***************\n");
printf("**模式选项: 1-十→十六 2-十→八 3-十→二 **\n");
printf("** 4-十六→十 5-十六→八 6-十六→二 **\n");
printf("** 7-八→十六 8-八→十 9-八→二 **\n");
printf("** 10-二→十六 11-二→十 12-二→八 0-退出 **\n");
printf("************************************************-制作人:王定雄-***************\n");
printf("请输入模式选项号:");
}
void sel(void)
{ int num;
while((scanf("%d",&num))==1)
{
switch(num)
{
case 0:goto out;
case 1:tentosixteen();break;
case 2:tentoeight();break;
case 3:tentotwo();break;
case 4:sixteentoten();break;
case 5:sixteentoeight();break;
case 6:sixteentotwo();break;
case 7:eighttosixteen();break;
case 8:eighttoten();break;
case 9:eighttotwo();break;
case 10:twotosixteen();break;
case 11:twototen();break;
case 12:twotoeight();break;
default:printf("无此选项。\n");break;
}
while(getchar()!='\n')
continue;
printf("\n请再次选择模式!\n");
}
out:printf("\n***您已选择退出。***\n***************感谢你的使用!***************\n");
}
void tentosixteen(void)
{
int i;
printf("--------------------进入【十→十六】模式--------------------\n\n");
printf("十进制数:");
scanf("%d",&i);
printf("→十六进制数:%X\n",i);
printf("\n--------------------退出【十→十六】模式--------------------\n");
}
void tentoeight(void)
{
int i;
printf("--------------------进入【十→八】模式--------------------\n\n");
printf("十进制数:");
scanf("%d",&i);
printf("→八进制数:%o\n",i);
printf("\n--------------------退出【十→八】模式--------------------\n");
}
void tentotwo(void)
{
int i;
char s[128];
printf("--------------------进入【十→二】模式--------------------\n\n");
printf("十进制数:");
scanf("%d",&i);
itoa(i, s, 2);
printf("→二进制数:%s\n",s);
printf("\n--------------------退出【十→二】模式--------------------\n");
}
void sixteentoten(void)
{
int i;
printf("--------------------进入【十六→十】模式--------------------\n\n");
printf("十六进制数:");
scanf("%X",&i);
printf("→十进制数:%d\n",i);
printf("\n--------------------退出【十六→十】模式--------------------\n");
}
void eighttoten(void)
{
int i;
printf("--------------------进入【八→十】模式--------------------\n\n");
printf("八进制数:");
scanf("%o",&i);
printf("→十进制数:%d\n",i);
printf("\n--------------------退出【八→十】模式--------------------\n");
}
void sixteentotwo(void)
{
int i;
char s[128];
printf("--------------------进入【十六→二】模式--------------------\n\n");
printf("十六进制数:");
scanf("%x",&i);
itoa(i, s, 2);
printf("→二进制数:%s\n",s);
printf("\n--------------------退出【十六→二】模式--------------------\n");
}
void eighttotwo(void)
{
int i;
char s[128];
printf("--------------------进入【八→二】模式--------------------\n\n");
printf("八进制数:");
scanf("%o",&i);
itoa(i, s, 2);
printf("→二进制数:%s\n",s);
printf("\n--------------------退出【八→二】模式--------------------\n");
}
void twototen(void)
{
char *p;
char* endp=0;
char * pArr;
int i,len;
printf("--------------------进入【二→十】模式--------------------\n\n");
printf("请输入二进制位数:");
scanf("%d",&len);
pArr=(char*)malloc(len*sizeof(char));
for(i=0;i<len;i++);
scanf("%s",pArr);
p=pArr;
printf("%d\n",strtol( p , &endp , 2 ) );
printf("\n--------------------退出【二→十】模式--------------------\n");
}
void twotosixteen(void)
{
char *p;
char* endp=0;
char * pArr;
int i,len;
printf("--------------------进入【二→十六】模式--------------------\n\n");
printf("请输入二进制位数:");
scanf("%d",&len);
pArr=(char*)malloc(len*sizeof(char));
for(i=0;i<len;i++);
scanf("%s",pArr);
p=pArr;
printf("%x\n",strtol( p , &endp , 2 ) );
printf("\n--------------------退出【二→十六】模式--------------------\n");
}
void twotoeight(void)
{
char *p;
char* endp=0;
char * pArr;
int i,len;
printf("--------------------进入【二→八】模式--------------------\n\n");
printf("请输入二进制位数:");
scanf("%d",&len);
pArr=(char*)malloc(len*sizeof(char));
for(i=0;i<len;i++);
scanf("%s",pArr);
p=pArr;
printf("%o\n",strtol( p , &endp , 2 ) );
printf("\n--------------------退出【二→八】模式--------------------\n");
}
void eighttosixteen(void)
{
int i;
printf("--------------------进入【八→十六】模式--------------------\n\n");
printf("八进制数:");
scanf("%o",&i);
printf("→十六进制数:%X\n",i);
printf("\n--------------------退出【八→十六】模式--------------------\n");
}
void sixteentoeight(void)
{
int i;
printf("--------------------进入【十六→八】模式--------------------\n\n");
printf("十六进制数:");
scanf("%x",&i);
printf("→八进制数:%o\n",i);
printf("\n--------------------退出【十六→八】模式--------------------\n");
}
//////////////////////////////////////代码段//////////////////////////////////////////////
因为简单,就不做解释了。二进制相关的转换相对不容易看懂,就是使用那个函数即可。不清楚可以查询MSDN,有很详细的说明。