注册 登录
编程论坛 数据结构与算法

数据结构作业,要求输入一个十进制的数,转换为二进制输出。本人新手,自己编的代码,为何不能输出结果?

a853052879 发布于 2015-11-02 12:19, 5072 次点击
本人新手,自己编的代码,但是为什么不能输出结果?求大牛指点!急急急!!感激不尽哈
#include<stdio.h>
#include<stdlib.h>
typedef int Elemtype;
#define M 100
typedef struct
{
    Elemtype data[M];
    int top;
}sqstack;
void Initsqstack(sqstack *&s)
{
    s=(sqstack *)malloc(sizeof(sqstack));
    s->top=-1;
}
bool stackEmpty(sqstack *s)
{
    return(s->top==-1);
}
bool push(sqstack *&s,Elemtype e)
{
    if(s->top==M-1)
        return false;
    s->top++;
    s->data[s->top]=e;
    return true;
}
bool pop(sqstack *&s,Elemtype &e)
{
    if(s->top==-1)
    return false;
    e=s->data[s->top];
    s->top--;
    return true;
}
int main()
{
    Elemtype e,n;
    sqstack *st;
    scanf("%d",&n);
    st=(sqstack *)malloc(sizeof(int));
    if(st==NULL)
        return 0;
    Initsqstack(st);
    while(e!=0)
    {
        push(st,e=n%2);
        n=n/2;
    }
    while(e!=0)
    {
        pop(st,e=n%2);
        n=n/2;
        printf("%d",e);
        }
    }
    free(st);
    return true;
}

5 回复
#2
wp2319572015-11-02 13:03
是为了练习链表吗  进制转换没有这么麻烦的
#3
a8530528792015-11-02 19:27
回复 2楼 wp231957
为了练习栈的基本操作
#4
a8530528792015-11-03 21:55
回复 2楼 wp231957
我已经懂了~~~
#5
s5242502622015-11-06 12:36
我也是新手,你能在后面加备注让我学习下吗,我基础很差。
#6
一个人用菊花2015-11-11 12:33
#include <iostream.h>
void binary(int number) //转换为二进制输出
{
   int remainder;//余数
   if(number <= 1)
   {
      cout << number;
      return;
   }
   remainder = number%2;//求余数
   binary(number >> 1);    //递归调用  右移一位
   cout << remainder;
}
void main(void) //主函数
{
   int number;
   cout << "请输入一个正整数: ";
   cin >> number;
   if (number < 0)
      cout << "输入错误!\n";
   else
   {
      cout << number << "转换为二进制为: ";
      binary(number);//转换为二进制输出
      cout << endl;
   }
}
1