从K进制转换成T进制.
答案:3 悬赏:70 手机版
解决时间 2021-04-07 10:30
- 提问者网友:咪咪
- 2021-04-06 13:30
从K进制转换成T进制.
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-04-06 14:13
本来想写一个,时间问题,网上找了一个
#include
#include
#include
void dtox(double num,int jz)
{
char xnum[100];
int dnum=(int) num;
int i=0,j=0,e = 0;
while(dnum>=jz)
{
xnum[j++]=dnum%jz+48;
dnum=dnum/jz;
}
xnum[j] = dnum+48;
for(i = j;i>=0;i--)
{
printf("%c",xnum[i]);
}
if(dnum - num != 0)
{
printf(".");
num = num - (int)num;
do
{
e++;
printf("%c",(int)(num*jz)+48);
num = num*jz-(int)(num*jz);
if(num == 0)break;
}
while(e<20);
}
}
double xtod(char num[],int jz)
{
double dnum = 0;
int i,j,k=0,n=0,b;
for(i=0;;i++)
{
if(num[i]=='')break;
else
n++;
if(num[i]=='.')
{
j=i;k=1;
}
}
for(i=j-1;i>=0;i--)
{
dnum =dnum + (double)(num[j-i-1]-48)*pow(jz,i);
}
if(k==1)
{
for(i=j+1;i {
if(num[i]=='A') b=10;
else if(num[i]=='B') b=11;
else if(num[i]=='C') b=12;
else if(num[i]=='D') b=13;
else if(num[i]=='E') b=14;
else if(num[i]=='F') b=15;
else b=num[i]-'0';
dnum=dnum+b*pow(jz,-(i-j));
}
}
return dnum;
}
void main()
{
char num[100];
double dnum;
int jz1,jz2;
printf("intput one data");
scanf("%s",num);
printf("输入数为几进制");
scanf("%d",&jz1);
printf("转换为几进制");
scanf("%d",&jz2);
dtox(xtod(num,jz1),jz2);
}追问你就写一个呗追答你在挑战我吗?
好,我接受你的挑战
#include "stdio.h"
#include "math.h"
void main()
{
int a,b,x,y; //这个不多说
int i=0; //标记a的位数,后面用来辅助循环
int w; //和i一起辅助循环
int s=0; //把a转换成10进制
int c; //取单个数
printf("A(x)-->B(y)
");
printf("A="); //输入A,x,y
scanf("%d",&a);
printf("(x)=");
scanf("%d",&x);
printf("(y)=");
scanf("%d",&y);
c=a;
while (1) //用循环计算A的位数
{
c/=10;
if (c!=0)
i++;
else
{
i++;
break;
}
} //现在i是a的位数
for (w=1;w<=i;w++) //把a换成10进制
{
c=int(a/pow(10,w-1))%10;
s=s+c*pow(10,w-1);
} //完成
c=s;
b=0;
for (w=1;c>=y;w++) //换y进制
{
i=c%y; //i是余数
c=int(c/y); //记录
b=b+i*pow(10,w-1);
}
b=b+i*pow(10,w-1); //还差一次
printf("B=%d
",b); //完成
} 给分给分
#include
#include
#include
void dtox(double num,int jz)
{
char xnum[100];
int dnum=(int) num;
int i=0,j=0,e = 0;
while(dnum>=jz)
{
xnum[j++]=dnum%jz+48;
dnum=dnum/jz;
}
xnum[j] = dnum+48;
for(i = j;i>=0;i--)
{
printf("%c",xnum[i]);
}
if(dnum - num != 0)
{
printf(".");
num = num - (int)num;
do
{
e++;
printf("%c",(int)(num*jz)+48);
num = num*jz-(int)(num*jz);
if(num == 0)break;
}
while(e<20);
}
}
double xtod(char num[],int jz)
{
double dnum = 0;
int i,j,k=0,n=0,b;
for(i=0;;i++)
{
if(num[i]=='')break;
else
n++;
if(num[i]=='.')
{
j=i;k=1;
}
}
for(i=j-1;i>=0;i--)
{
dnum =dnum + (double)(num[j-i-1]-48)*pow(jz,i);
}
if(k==1)
{
for(i=j+1;i
if(num[i]=='A') b=10;
else if(num[i]=='B') b=11;
else if(num[i]=='C') b=12;
else if(num[i]=='D') b=13;
else if(num[i]=='E') b=14;
else if(num[i]=='F') b=15;
else b=num[i]-'0';
dnum=dnum+b*pow(jz,-(i-j));
}
}
return dnum;
}
void main()
{
char num[100];
double dnum;
int jz1,jz2;
printf("intput one data");
scanf("%s",num);
printf("输入数为几进制");
scanf("%d",&jz1);
printf("转换为几进制");
scanf("%d",&jz2);
dtox(xtod(num,jz1),jz2);
}追问你就写一个呗追答你在挑战我吗?
好,我接受你的挑战
#include "stdio.h"
#include "math.h"
void main()
{
int a,b,x,y; //这个不多说
int i=0; //标记a的位数,后面用来辅助循环
int w; //和i一起辅助循环
int s=0; //把a转换成10进制
int c; //取单个数
printf("A(x)-->B(y)
");
printf("A="); //输入A,x,y
scanf("%d",&a);
printf("(x)=");
scanf("%d",&x);
printf("(y)=");
scanf("%d",&y);
c=a;
while (1) //用循环计算A的位数
{
c/=10;
if (c!=0)
i++;
else
{
i++;
break;
}
} //现在i是a的位数
for (w=1;w<=i;w++) //把a换成10进制
{
c=int(a/pow(10,w-1))%10;
s=s+c*pow(10,w-1);
} //完成
c=s;
b=0;
for (w=1;c>=y;w++) //换y进制
{
i=c%y; //i是余数
c=int(c/y); //记录
b=b+i*pow(10,w-1);
}
b=b+i*pow(10,w-1); //还差一次
printf("B=%d
",b); //完成
} 给分给分
全部回答
- 1楼网友:雪起风沙痕
- 2021-04-06 16:08
楼上的能给个高精么
- 2楼网友:七十二街
- 2021-04-06 15:01
cin>>num>>K>>T;
int H_num=K*num;
double T_num=H_num/T;
int H_num=K*num;
double T_num=H_num/T;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯