标题:10进制小数转换成2进制问题
只看楼主
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
结帖率:75%
 问题点数:0 回复次数:6 
10进制小数转换成2进制问题
想法是用队列实现
那里出错了?


#include "stdio.h"
#include "stdlib.h"
typedef  int datatype;


typedef struct linknode
{
    datatype info;
    struct linknode *next;
}node;


typedef struct
{
     node *rear,*front;        
        
}queue;
queue *initqueue()
{
      queue *q;
      q=(queue*)malloc(sizeof(queue));
      q->rear=NULL;
      q->front=NULL;
      return q;      
      
      
      
}
queue *insert(queue *q,datatype oPara)
{
     node *p;
     p=(node*)malloc(sizeof(node));
     p->info=oPara;
     p->next=NULL;
     if(q->front==NULL)
     {
      printf("empty");                  
     }
     else
     {
      q->rear->next=p;
      q->rear=p;
     }
     return q;  
      
      
}
void printqueue(queue *q)
{
 node *p;
 p=q->front;
 if(!p)
 {
  printf("empty");      
 }
 else
 {
 while(p)
 {
  printf("%d",p->info);p=p->next;        
 }     
 }
     
     
}

/*node *push(node *top,datatype oPara)
{
    node *p;
    p=(node*)malloc(sizeof(node));
    p->info=oPara;
    p->next=top;
    top=p;
    return top;


}

void printstack(node *top)
{
    node *p;
    p=top;
    if(!p)printf("empty");
    else{
    while(p){printf("%d",p->info);p=p->next;}
    }
}

void convertint(datatype oPara)
{
    node *top=NULL;
    while(oPara!=0)
    {
        top=push(top,oPara%2);
        oPara=oPara/2;
    }
    printstack(top);

}*/
void convertfloat(float oPara)
{
 queue *q=initqueue();
 while(oPara!=0.0)
 {
  q=insert(q,(int)(oPara*2));
  oPara=oPara*2;
  oPara=oPara-(int)oPara;               
 }
 printqueue(q);
     
     
     
     
     
}
int main()
{

    
//convertint(5);
    convertfloat(0.1);getchar();



}
搜索更多相关主题的帖子: queue 进制 小数 node rear 
2008-05-12 22:58
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
得分:0 
void main()
{

   
//convertint(5);
   convertfloat(0.1); getchar();




}
这样写就没出现错误了  不过结果,,,,,,,.
我复制过去编译的时候也出现了错误 你的程序我在看 好多看的慢

[[it] 本帖最后由 走一圈 于 2008-5-12 23:21 编辑 [/it]]
2008-05-12 23:14
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
得分:0 
不是编译的错误,是运行的逻辑错误,不断的输出empty,我函数调用只是随便输入0.1测试一下。不知道哪里出错的
2008-05-12 23:20
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
得分:0 
线等,急~~高人解答
2008-05-12 23:50
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
询问一下LZ:十进制小数转二进制的原理是啥?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-13 10:34
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
得分:0 
好像是你从来不曾改变那个front指针吧!!!

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-05-13 10:39
sl65421413
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-12-8
得分:0 
10进制转成2进制
#include <stdio.h>
void main()
{
    int a,b,i,s[100];
    printf("请输入一个整数:");
    scanf("%d",&a);
    for(i=0;i<100;i++)
    {
        s[i]=a%2;
        a=a/2;
        if(a==0)
        {
            b=i;
            break;
        }
    }
    for(i=0;i<b+1;i++)
        printf("%d",s[b-i]);
    printf("\n");
}
我才开始学C语言哈,这是我编的,用最基本的语言编的,有高手教我手艺的请加我QQ 398315708!
2008-12-08 19:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-214007-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017704 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved