| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1504 人关注过本帖
标题:十进制到二进制的转换用栈实现
只看楼主 加入收藏
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:2 
十进制到二进制的转换用栈实现
#include<stdio.h>


       typedef      struct
     {int a[10];
      int top;}stack;

     void main()
     {
       void push(stack s,int n);
       int n;
       stack s;
      // s.a[10]
       s.top=0;

       clrscr();
       printf("input a decimal number:\n");

       scanf("%d",&n);
       while(n)
       { push(s,n%2);
         n/=2;
       }
       while(s.top>=0)
       {printf("%d",s.a[s.top]);s.top--;}
     }
     void push( stack s,int n)
     { s.a[s.top]=n;s.top++;
     }
无论输入什么数总是输出64
搜索更多相关主题的帖子: 二进制 十进制 
2007-12-28 22:28
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
#include<stdio.h>


       typedef      struct
     {int a[10];
      int top;}stack;

     void main()      /* void main 是错误的 */
     {
       void push(stack s,int n);    /* 函数错误 */
       int n;
       stack s;
      // s.a[10]
       s.top=0;

       clrscr();
       printf("input a decimal number:\n");

       scanf("%d",&n);
       while(n)
       { push(s,n%2);
         n/=2;
       }
       while(s.top>=0)   /* 输出错误 */
       {printf("%d",s.a[s.top]);s.top--;}
     }
     void push( stack s,int n)
     { s.a[s.top]=n;s.top++;
     }


1.void main 要改成 int main, 最后返回 0
2. 函数push,改变的是形参,而不是实参,由于C中没有引用,可以使用指针
   void push (stack *s, int n);
   其定义和使用做相应改动
3. 由于C语言中数组的元素是从第0个开始,所以导致输出错误

坚决不跟用TC的人打交道!
2007-12-29 10:07
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
堆栈结构的大小好像太小了。十进制转二进制,至多有32位,而你的堆栈存放0,1的数组才能处理一个字节...........

樱花大战,  有爱.
2007-12-29 11:01
快速回复:十进制到二进制的转换用栈实现
数据加载中...
 
   



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

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