漫漫的寒假是无聊的,在家没事,遍用C写了个“万能进制转换器”的小程序,虽然叫万能,但还是不能转换带小数点的。没办法,新手嘛,能力有限·····望大家不要见笑。。有兴趣的我们一起探讨··一起学习!!!
(程序界面效果)
下载地址:http://download.youkuaiyun.com/source/3044157
有兴趣的可以运行下面的源码。。
源码如下:
#include<stdio.h>
two_eight()
{
char *p,s[20];
long n;
int i;
p=s;
printf(" 请输入一个二进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*2+*p-'0';
p++;
}
i=0;
while(n)
{
s[i]=n%8;
n=n/8;
i++;
}
printf(" 2 进制转化为 8 进制:");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
two_ten()
{
char *p,s[20];
long n;
p=s;
printf(" 请输入一个二进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*2+*p-'0';
p++;
}
printf(" 2 进制转化为 10 进制:%d/n",n);
}
two_sixten()
{
char *p,s[20],str[20];
long n;
int i,mark;
p=s;
printf(" 请输入一个二进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*2+*p-'0';
p++;
}
i=0;
while(n)
{
s[i]=n;
n=n/16;
mark=s[i];
switch(mark)
{
case 0: str[i]='0'; break;
case 1: str[i]='1'; break;
case 2: str[i]='2'; break;
case 3: str[i]='3'; break;
case 4: str[i]='4'; break;
case 5: str[i]='5'; break;
case 6: str[i]='6'; break;
case 7: str[i]='7'; break;
case 8: str[i]='8'; break;
case 9: str[i]='9'; break;
case 10: str[i]='A'; break;
case 11: str[i]='B'; break;
case 12: str[i]='C'; break;
case 13: str[i]='D'; break;
case 14: str[i]='E'; break;
case 15: str[i]='F'; break;
}
i++;
}
printf(" 2 进制转化为 16 进制:");
for(i--;i>=0;i--)
printf("%c",str[i]);
printf("/n");
}
eight_two()
{
char *p,s[20];
long n;
int i;
p=s;
printf(" 请输入一个八进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*8+*p-'0';
p++;
}
i=0;
while(n)
{
s[i]=n%2;
n=n/2;
i++;
}
printf(" 8 进制转化为 2 进制:");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
eight_ten()
{
char *p,s[20];
long n;
p=s;
printf(" 请输入一个八进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*8+*p-'0';
p++;
}
printf(" 8 进制转化为 10 进制:%d/n",n);
}
eight_sixten()
{
char *p,s[20],str[20];
long n;
int i,mark;
p=s;
printf(" 请输入一个八进制数: ");
scanf("%s",p); n=0;
while(*(p)!='/0')
{
n=n*8+*p-'0';
p++;
}
i=0;
while(n)
{
s[i]=n;
n=n/16;
mark=s[i];
switch(mark)
{
case 0: str[i]='0'; break;
case 1: str[i]='1'; break;
case 2: str[i]='2'; break;
case 3: str[i]='3'; break;
case 4: str[i]='4'; break;
case 5: str[i]='5'; break;
case 6: str[i]='6'; break;
case 7: str[i]='7'; break;
case 8: str[i]='8'; break;
case 9: str[i]='9'; break;
case 10: str[i]='A'; break;
case 11: str[i]='B'; break;
case 12: str[i]='C'; break;
case 13: str[i]='D'; break;
case 14: str[i]='E'; break;
case 15: str[i]='F'; break;
}
i++;
}
printf(" 8 进制转化为 16 进制:");
for(i--;i>=0;i--)
printf("%c",str[i]);
printf("/n");
}
ten_two()
{
int s[20],n,i;
printf(" 请输入一个10进制数: ");
scanf("%d",&n);
i=0;
while(n)
{
s[i]=n%2;
n=n/2;
i++;
}
printf(" 10 进制转化为 2 进制::");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
ten_eight()
{
int s[20],n,i;
printf(" 请输入一个10进制数: ");
scanf("%d",&n);
i=0;
while(n)
{
s[i]=n%8;
n=n/8;
i++;
}
printf(" 10 进制转化为 8 进制:");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
ten_sixten()
{
int s[20],n,i,mark;
char str[20];
printf(" 请输入一个10进制数: ");
scanf("%d",&n);
i=0;
while(n)
{
s[i]=n;
n=n/16;
mark=s[i];
switch(mark)
{
case 0: str[i]='0'; break;
case 1: str[i]='1'; break;
case 2: str[i]='2'; break;
case 3: str[i]='3'; break;
case 4: str[i]='4'; break;
case 5: str[i]='5'; break;
case 6: str[i]='6'; break;
case 7: str[i]='7'; break;
case 8: str[i]='8'; break;
case 9: str[i]='9'; break;
case 10: str[i]='A'; break;
case 11: str[i]='B'; break;
case 12: str[i]='C'; break;
case 13: str[i]='D'; break;
case 14: str[i]='E'; break;
case 15: str[i]='F'; break;
}
i++;
}
printf(" 10 进制转化为 16 进制:");
for(i--;i>=0;i--)
printf("%c",str[i]);
printf("/n");
}
sixten_two()
{
int s[20],n=0,i,j;
char str[20];
printf(" 请输入一个16进制数: ");
scanf("%s",str);
i=0;
while(str[i]!='/0')
{
switch(str[i])
{
case '0': s[i]=0; break;
case '1': s[i]=1; break;
case '2': s[i]=2; break;
case '3': s[i]=3; break;
case '4': s[i]=4; break;
case '5': s[i]=5; break;
case '6': s[i]=6; break;
case '7': s[i]=7; break;
case '8': s[i]=8; break;
case '9': s[i]=9; break;
case 'A': s[i]=10; break;
case 'B': s[i]=11; break;
case 'C': s[i]=12; break;
case 'D': s[i]=13; break;
case 'E': s[i]=14; break;
case 'F': s[i]=15; break;
case 'a': s[i]=10; break;
case 'b': s[i]=11; break;
case 'c': s[i]=12; break;
case 'd': s[i]=13; break;
case 'e': s[i]=14; break;
case 'f': s[i]=15; break;
}
i++;
}
for(j=0;j<i;j++)
{
n=n*16+s[j];
}
i=0;
while(n)
{
s[i]=n%2;
n=n/2;
i++;
}
printf(" 16 进制转化为 2 进制::");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
sixten_eight()
{
int s[20],n=0,i,j;
char str[20];
printf(" 请输入一个16进制数: ");
scanf("%s",str);
i=0;
while(str[i]!='/0')
{
switch(str[i])
{
case '0': s[i]=0; break;
case '1': s[i]=1; break;
case '2': s[i]=2; break;
case '3': s[i]=3; break;
case '4': s[i]=4; break;
case '5': s[i]=5; break;
case '6': s[i]=6; break;
case '7': s[i]=7; break;
case '8': s[i]=8; break;
case '9': s[i]=9; break;
case 'A': s[i]=10; break;
case 'B': s[i]=11; break;
case 'C': s[i]=12; break;
case 'D': s[i]=13; break;
case 'E': s[i]=14; break;
case 'F': s[i]=15; break;
case 'a': s[i]=10; break;
case 'b': s[i]=11; break;
case 'c': s[i]=12; break;
case 'd': s[i]=13; break;
case 'e': s[i]=14; break;
case 'f': s[i]=15; break;
}
i++;
}
for(j=0;j<i;j++)
{
n=n*16+s[j];
}
i=0;
while(n)
{
s[i]=n%8;
n=n/8;
i++;
}
printf(" 16 进制转化为 8 进制:");
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("/n");
}
sixten_ten()
{
int s[20],n=0,i,j;
char str[20];
printf(" 请输入一个16进制数: ");
scanf("%s",str);
i=0;
while(str[i]!='/0')
{
switch(str[i])
{
case '0': s[i]=0; break;
case '1': s[i]=1; break;
case '2': s[i]=2; break;
case '3': s[i]=3; break;
case '4': s[i]=4; break;
case '5': s[i]=5; break;
case '6': s[i]=6; break;
case '7': s[i]=7; break;
case '8': s[i]=8; break;
case '9': s[i]=9; break;
case 'A': s[i]=10; break;
case 'B': s[i]=11; break;
case 'C': s[i]=12; break;
case 'D': s[i]=13; break;
case 'E': s[i]=14; break;
case 'F': s[i]=15; break;
case 'a': s[i]=10; break;
case 'b': s[i]=11; break;
case 'c': s[i]=12; break;
case 'd': s[i]=13; break;
case 'e': s[i]=14; break;
case 'f': s[i]=15; break;
}
i++;
}
for(j=0;j<i;j++)
{
n=n*16+s[j];
}
printf(" 16 进制转化为 10 进制:%d/n",n);
}
void main()
{
int select,i; char str[20], n ;
printf("/n");
printf("/t**************************欢迎使用******************************/n");
printf("/t*----------------万能进制转换器v1.0 版-------------------------*/n");
printf("/t*——使用方法: */n");
printf("/t* 请选择输入下列功能前的数字序号后按enter键进入。 */n");
printf("/t* ~~~~仅用于学习交流。 */n");
printf("/t*/t/t/t ------欢迎与我探讨:QQ 354150708 */n");
printf("/t****************************************************************/n");
printf("/n");
printf("/n");
printf("/t 1 : 2 进制转化为 8 进制。");
printf(" 2 : 2 进制转化为 10 进制。/n");
printf("/t 3 : 2 进制转化为 16 进制。");
printf(" 4 : 8 进制转化为 2 进制。/n");
printf("/t 5 : 8 进制转化为 10 进制。");
printf(" 6 : 8 进制转化为 16 进制。/n");
printf("/t 7 :10 进制转化为 2 进制。");
printf(" 8 :10 进制转化为 8 进制。/n");
printf("/t 9 :10 进制转化为 16 进制。");
printf(" 10 :16 进制转化为 2 进制。/n");
printf("/t 11 :16 进制转化为 8 进制。");
printf(" 12 :16 进制转化为 10 进制。/n");
printf("/n");
printf("按任意键 回车 后继续,按 n 键 回车 后退出程序。");
n=getchar();
printf("/n");
while(n!='n')
{
printf("请选择您要转换的类型!!!");
scanf("%d",&select);
for(;select<1||select>12;)
{
printf("输入错误,请重新输入!!/n");
scanf("%d",&select);
}
switch(select)
{
case 1: two_eight(); break;
case 2: two_ten(); break;
case 3: two_sixten(); break;
case 4: eight_two(); break;
case 5: eight_ten(); break;
case 6: eight_sixten(); break;
case 7: ten_two(); break;
case 8: ten_eight(); break;
case 9: ten_sixten(); break;
case 10: sixten_two(); break;
case 11: sixten_eight(); break;
case 12: sixten_ten(); break;
}
printf("按任意键回车继续,按 n 键退出程序。");
getchar();
n=getchar();
printf("/n");
}
}