进制转换器1.0(C语言编写)(数学运算法模式)
时间:2011-06-17
来源:刘信含
进制转换器1.0(C语言编写),数学运算法写的,还是存在输入纠错功能的BUG。
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
rzs(long int *w,long int j);
szr(long int *w,long int d);
main()
{
long int a,b,c,x,y;
char e[50];
while(1)
{
do
{
printf("输入转换的原进制数:");
scanf("%ld",&b);
fflush(stdin);
}while(b!=2&&b!=8&&b!=16&&b!=10);
do
{
printf("输入转换之后的进制数:");
scanf("%ld",&c);
fflush(stdin);
}while(c!=2&&c!=8&&c!=16&&c!=10);
if(b==10&&c==16)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
printf("%x\n",a);
}
else if(b==16&&c==10)
{
printf("输入要进行转换的数字:");
scanf("%x",&a);
printf("%ld\n",a);
}
else if((b==2||b==8)&&c==10)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
rzs(&a,b);
printf("%ld\n",a);
}
else if(b==10&&c==8)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
szr(&a,c);
printf("%ld\n",a);
}
else if(b==2&&c==8||c==2&&b==8)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
rzs(&a,b);
x=a;
szr(&x,c);
printf("%ld\n",x);
}
else if((b==2||b==8)&&c==16)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
rzs(&a,b);
printf("%x\n",a);
}
else if(b==16&&(c==8||c==2))
{
printf("输入要进行转换的数字:");
scanf("%x",&a);
itoa(a,e,2);
printf("%s\n",e);
}
else if(b==10&&c==2)
{
printf("输入要进行转换的数字:");
scanf("%ld",&a);
itoa(a,e,2);
printf("%s\n",e);
}
}
}
rzs(long int *w,long int j)
{
long int k=0,b=0,a[32],f[32],i,c,d=10,e=1;
k=*w;
for(c=0;c<32;c++)
{
if(k/e%d==0)
{
a[c]=0;
e=e*10;
}
else
{
a[c]=k/e%d;
e=e*10;
}
}
for(i=0;i<32;i++)
{
f[i]=pow(j,i);
}
c=0,i=0;
while(c<32||i<32)
{
b=b+a[c++]*f[i++];
}
*w=b;
}
szr(long int *w,long int d)
{
long int a[1000],b=0,i,c=0,e=1,j=0;
b=*w;
for(i=0;;i++)
{
a[i]=b%d;
b=b/d;
c++;
if(b==0)
break;
}
i=c;
while(i>0)
{
a[i]=a[i]*pow(10,i);
e=e/10;
i--;
}
for(i=0;i<c;i++)
{
j+=a[i];
}
*w=j;
}
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28