| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 370 人关注过本帖
标题:栈的一些简单问题(二进制和十进制的转化)
只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
收藏
已结贴  问题点数:20 回复次数:4 
栈的一些简单问题(二进制和十进制的转化)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define STACK_INITSIZE 20
#define STACKCREMENT 10

typedef char Elemtype;
typedef struct
{
    Elemtype *base;
    Elemtype *top;
    int stacksize;
}sqStack;
void initStack(sqStack *s)
{
    s->base=(char *)malloc(STACKCREMENT * sizeof(char));
    if(!s->base)
    {
        puts("Error!");
    }
    s->top=s->base;
    s->stacksize=STACK_INITSIZE;

}
void Push(sqStack *s,Elemtype e)
{
    if(s->top-s->base>=s->stacksize)
    {
        s->base=(char *)realloc(s->base,(s->stacksize+STACKCREMENT) *sizeof(Elemtype));
        if(!s->base)
        {
            puts("Error!");
        }
        s->top=s->base+s->stacksize;
        s->stacksize=s->stacksize+STACKCREMENT;
    }
    *(s->top)=e;
    s->top++;
}

void Pop (sqStack *s,Elemtype *e)
{
    if(s->top==s->base)
    {
        return;
    }
    *e=*--(s->top);
   
}
int StackLen(sqStack s)
{
    return (s.top-s.base);
}
int main(void)
{
    Elemtype c;
    sqStack s;
    int len,i;
    double sum=0;
    printf("Please input a Binary digit\n");

    initStack(&s);
    scanf("%c",&c);
    while(c!='#')
    {
        Push(&s,c);
        scanf("%c",&c);
    }
    getchar();
    len=StackLen(s);

    for(i=0;i<len;i++)
    {
        Pop(&s,&c);
        sum=sum+(c-48)*pow(2,i);
    }
    printf("Decimal is %d\n",sum);
    getchar();
    return 0;
}




这是一个简单的数据栈的问题,但小弟不才,调了半天总是结果是:Decimal is 0   是不是出栈函数写错了 ,还是别的地方出错了,哎 还是那句话,只缘身在此山中啊!!!
搜索更多相关主题的帖子: 十进制 二进制 include top void 
2012-10-11 10:44
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:20 
其他地方貌似没有错.....就pow()这里错了,具体怎么了...也不清楚...坐等高手吧
2012-10-11 15:13
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
........这。。

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-11 17:36
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
原来是这里错了。。。 printf("Decimal is %d\n",sum);

sum是double类型的 ,好吧 我承认我手又贱了!!!

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-11 18:03
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 4楼 一个孩子
这么久了,我才知道pow()返回来的是double型的....学习了....LZ太感谢你的这一错了哦....嘿嘿....真的3Q
2012-10-11 19:18
快速回复:栈的一些简单问题(二进制和十进制的转化)
数据加载中...
 
   



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

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