用数据结构(C语言版)中链栈和链队列,实现进制转换。 做的好的话多加分
答案:2 悬赏:40 手机版
解决时间 2021-03-01 01:56
- 提问者网友:皆是孤独
- 2021-02-28 22:30
用数据结构(C语言版)中链栈和链队列,实现进制转换。 做的好的话多加分
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-02-28 23:08
//十进制转化成N进制的算法是
//整数部分为除N取余法,小数部分为乘N取整法
#include
#include
#include
double EPS=1.0e-8;
int dblcmp(double x)
{
if(fabs(x) return x<0?-1:1;
}
void printfFloat(double x,int base)
{
if(dblcmp(x==0))return ;
printf(".");
int tmp;
while(dblcmp(x))
{
x*=base;
tmp=x;
x-=tmp;
printf("%d",tmp);
}
}
void printfInt(int n,int base)
{
if(n==0)return ;
printfInt(n/base,base);
printf("%d",n%base);
}
void change(double x,int base)
{
int tmp=x;
if(tmp==0)
{
printf("0");
}
else
{
printfInt(tmp,base);
}
printfFloat(x-tmp,base);
puts("");
}
int main()
{
double x;
while(scanf("%lf",&x)!=EOF)
{
printf("输出二进制:");
change(x,2);
printf("输出八进制:");
change(x,8);
printf("输出十六进制:");
change(x,16);
}
return 0;
}追问用链栈和链队列,你一个也没用啊?这个我们会,就是不会用链栈和链队列同时实现
求链栈和链队列实现。麻烦课,谢谢追答//好的
//十进制转化成N进制的算法是
//整数部分为除N取余法,小数部分为乘N取整法
#include
#include
#include
double EPS=1.0e-8;
int dblcmp(double x)
{
if(fabs(x) return x<0?-1:1;
}
void printfFloat(double x,int base)
{
if(dblcmp(x)==0)return ;
printf(".");
int q[100];
int i=0,j;
int tmp;
while(dblcmp(x))//队列先进先出的
{
x*=base;
tmp=x;
x-=tmp;
q[i++]=tmp;
}
for(j=0;j {
printf("%d",q[j]);
}
}
void printfInt(int n,int base)
{
if(n==0)return ;
int stk[100];//栈是先进后出的,先取出来的数是放在栈下面的
int i;
for(i=0;n;i++)//栈是先进后出的,先取出来的数是放在栈下面的
{
stk[i]=n%base;
n/=base;
}
for(i--;i>=0;i--)//所以这里输出的时候是从栈顶开始输出
{
printf("%d",stk[i]);
}
}
void change(double x,int base)
{
int tmp=x;
if(tmp==0)
{
printf("0");
}
else
{
printfInt(tmp,base);
}
printfFloat(x-tmp,base);
puts("");
}
int main()
{
double x;
while(scanf("%lf",&x)!=EOF)
{
printf("输出二进制:");
change(x,2);
printf("输出八进制:");
change(x,8);
printf("输出十六进制:");
change(x,16);
}
return 0;
}追问你的程序不错哦,就是麻烦帮我们每一步都注释一下呗 ?看不懂,很多代码不是我们学的,麻烦了。追答不会吧,哪个代码不是你学的啊?其实课程设计里的那些东西最烦了,老是要用什么链表的,用什么链表嘛.,用数组多简单啊.
我这里面只用了函数,循环,+-*/啊,你哪里不懂啦?
//整数部分为除N取余法,小数部分为乘N取整法
#include
#include
#include
double EPS=1.0e-8;
int dblcmp(double x)
{
if(fabs(x)
}
void printfFloat(double x,int base)
{
if(dblcmp(x==0))return ;
printf(".");
int tmp;
while(dblcmp(x))
{
x*=base;
tmp=x;
x-=tmp;
printf("%d",tmp);
}
}
void printfInt(int n,int base)
{
if(n==0)return ;
printfInt(n/base,base);
printf("%d",n%base);
}
void change(double x,int base)
{
int tmp=x;
if(tmp==0)
{
printf("0");
}
else
{
printfInt(tmp,base);
}
printfFloat(x-tmp,base);
puts("");
}
int main()
{
double x;
while(scanf("%lf",&x)!=EOF)
{
printf("输出二进制:");
change(x,2);
printf("输出八进制:");
change(x,8);
printf("输出十六进制:");
change(x,16);
}
return 0;
}追问用链栈和链队列,你一个也没用啊?这个我们会,就是不会用链栈和链队列同时实现
求链栈和链队列实现。麻烦课,谢谢追答//好的
//十进制转化成N进制的算法是
//整数部分为除N取余法,小数部分为乘N取整法
#include
#include
#include
double EPS=1.0e-8;
int dblcmp(double x)
{
if(fabs(x)
}
void printfFloat(double x,int base)
{
if(dblcmp(x)==0)return ;
printf(".");
int q[100];
int i=0,j;
int tmp;
while(dblcmp(x))//队列先进先出的
{
x*=base;
tmp=x;
x-=tmp;
q[i++]=tmp;
}
for(j=0;j {
printf("%d",q[j]);
}
}
void printfInt(int n,int base)
{
if(n==0)return ;
int stk[100];//栈是先进后出的,先取出来的数是放在栈下面的
int i;
for(i=0;n;i++)//栈是先进后出的,先取出来的数是放在栈下面的
{
stk[i]=n%base;
n/=base;
}
for(i--;i>=0;i--)//所以这里输出的时候是从栈顶开始输出
{
printf("%d",stk[i]);
}
}
void change(double x,int base)
{
int tmp=x;
if(tmp==0)
{
printf("0");
}
else
{
printfInt(tmp,base);
}
printfFloat(x-tmp,base);
puts("");
}
int main()
{
double x;
while(scanf("%lf",&x)!=EOF)
{
printf("输出二进制:");
change(x,2);
printf("输出八进制:");
change(x,8);
printf("输出十六进制:");
change(x,16);
}
return 0;
}追问你的程序不错哦,就是麻烦帮我们每一步都注释一下呗 ?看不懂,很多代码不是我们学的,麻烦了。追答不会吧,哪个代码不是你学的啊?其实课程设计里的那些东西最烦了,老是要用什么链表的,用什么链表嘛.,用数组多简单啊.
我这里面只用了函数,循环,+-*/啊,你哪里不懂啦?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯