【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《万能转换》,欢迎阅读!
#include<stdio.h>
#include<math.h>
int main()
{ int r=0;
while(r==0){
int m=0,n=0,q=0,i=0,j=0,k=0,t1,t2,s=0,l=0,q2=0;
int b[100],c[100],d[100],shuru[100],bt[100];
float sum=0,shuchuc[100],y,ct[100],sum2;
printf("\n");
//任意进制转换成10进制
printf("输入进制j数字:");
scanf("%d",&j);
printf("输入%d进制数字整数位数t1:",j);
scanf("%d",&t1);
printf("输入%d进制小数位数t2:",j);//小数位数t
scanf("%d",&t2);
for(i=0;i<t1;i++)
{printf("输入整数部分的第%d位数字",i+1);//输入J进制数字的整数部分
scanf("%d",&b[i]);
k=i+1;}
for(i=0;i<t2;i++)//依次输入每一位小数
{printf("输入第%d位小数",i+1);
scanf("%d",&shuru[i]);
}
for(i=0;i<t1;i++) //打印j进制 数字的整数部分
{
printf("%d ",b[i]);
}
printf(". ");
for(i=0;i<t2;i++) //打印j进制数字的小数部分
{
printf("%d ",shuru[i]);
}
printf("\n");
for(i=0;i<t1;i++)//整数的每一位对应的数字
{
c[i]=b[i]*pow(j,k-1);
k=k-1;
}
printf("%d进制数字整数部分每一位所对应的十进制数字:\n",j);
for(i=0;i<t1;i++) //打印j进制数字每一位所对应的十进制 数字
{
printf("%d ",c[i]);
}
for(i=0;i<t1;i++)
{ s=s+c[i];
} printf("\n");
printf("%d进制数字对应的十进制数字为:%d\n",j,s);
for(i=0;i<t2;i++) //分别将每一位j进制转换成10进制
{ q=i+1;
shuchuc[i]=shuru[i]*pow(j,-q);
}
printf("\n");
printf("%d进制数字每一位所对应的十进制数字:\n",j); //打印j进制数字每一位所对应的十进制 数字
for(i=0;i<t2;i++)
{
printf("%f ",shuchuc[i]);
}
for(i=0;i<t2;i++)
{ sum=sum+shuchuc[i];
} printf("\n");
printf("%d进制数字对应的十进制数字为:%f\n",j,sum);
// printf("你输入的%d进制数字是:%f\n",(s+sum));
//任意进制转换
printf("输入转换进制数字n:");
scanf("%d",&n);
while(s!=0)
{
for(i=0;fabs(s)>0;i++)
{
d[i]=(s%n);
s=s/n;
l=l+1;//记录循环次数
}
}printf("\n");
printf("%d",l); printf("\n"); //显示循环次数
printf("注释:%d进制整数部分转换为%d进制数为:",j,n);printf("\n");
for(i=(l-1);i>=0;i--)
{
printf("%d ",d[i]);
}
printf("\n");printf("\n");
sum2=sum;//传值
for(i=0;i<10;i++)
{ y=sum2*n;
bt[i]=int(y);
ct[i]=sum2*n-bt[i];
sum2=ct[i];
q2=q2+1;//记录循环次数
if(ct[i]==0)
break;
}
//printf("%d",q2);//显示循环次数
printf("注释:%d进制整小部分转换为%d进制数为:\n",j,n);
printf("0.");
for(i=0;i<q2;i++)
{
printf("%d " ,bt[i]);
}
}
return 0;
}