| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
ADSL如何秒变专线,公网IP盒子了解一下千里之行 始于足下
共有 745 人关注过本帖
标题:利用进栈,出栈操作实现十进制数转换为K进制数
只看楼主 加入收藏
小萍子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-14
结帖率:0
  已结贴   问题点数:20  回复次数:4   
利用进栈,出栈操作实现十进制数转换为K进制数
求各位大神看看这程序哪错了,执行结果很离谱,让人很无语
利用进栈,出栈操作实现十进制数转换为K进制数
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
    char *base;
    char *top;
    int stacksize;
}Sqstack;
int StackInit(Sqstack *s)
{
    s->base=(char *)malloc(STACK_INIT_SIZE *sizeof(int));
    if(!s->base)
        return 0;
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
    return 1;
}
int Push(Sqstack *s,char e)
{
    if(s->top-s->base>=s->stacksize)
    {
        s->base=(char *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));
        if(!s->base)
            return 0;
    s->top=s->base+s->stacksize;
    s->stacksize+=STACKINCREMENT;
    }
    *s->top++=e;
    return e;
}
int Pop(Sqstack *s,char e)
{
    if(s->top==s->base)
        return 0;
    e=--*s->top;
    return e;
}
int stackempty(Sqstack *s)
{
    if(s->top==s->base)
       return 1;
    else
        return 0;
}
int tf(Sqstack *s)
{
    int n,i=0,k,m;
    char a,e;
    printf("输入要转化的十进制数:\n");
    scanf("%d",&n);
    printf("输入要转化为的进制:\n");
    scanf("%d",&k);
    printf("将十进制数%d转化为%d进制是:\n",n,k);
    while(n)
    {
        m=n%k;
        if(m<10)
            a=48+m;
        else
            a=65+m-10;
        Push(s,a);
        n=n/k;
    }
    while(!stackempty(s))
    {
        Pop(s,e);
        printf("%c",e);
    }
    printf("\n");
    return 0;
}
int main()
{
    Sqstack s;
    StackInit(&s);
    tf(&s);
    return 0;
}
搜索更多相关主题的帖子: include return 十进制 
2013-11-11 12:21
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:166
帖 子:6794
专家分:42379
注 册:2010-12-16
  得分:10 
int Pop(Sqstack *s,char &e) // 这个用引用吧,你原来的你怎么能够带出去?
{
    if(s->top==s->base)
        return 0;
    // e=--*s->top;  // 因为你push的时候,就把top放在下一个没有使用的内存了,应该把top挪回一个单位在取。
    // 其实我很鄙视 e=--*s->top;这种风格
    s->top--;
    e = *s->top;

    return e;
}

我行我乐
我的博客:
http://blog.yuccn. net
2013-11-11 15:09
小萍子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-14
  得分:0 
回复 2楼 yuccn
哇!!!对了哎!太强了,太感谢了!
2013-11-13 10:31
子元
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2012-6-5
  得分:10 
回复 2楼 yuccn
程序代码:
int Pop(Sqstack *s,char &e)
{
    if(s->top==s->base)
        return 0;
    e=--*s->top;
    return e;
}
加上&后为什么会出现下面这几个错误啊?
D:\as\ffg\a.c(34) : error C2143: syntax error : missing ')' before '&'
D:\as\ffg\a.c(34) : error C2143: syntax error : missing '{' before '&'
D:\as\ffg\a.c(34) : error C2059: syntax error : '&'
D:\as\ffg\a.c(34) : error C2059: syntax error : ')'
2013-11-17 11:59
暂不存在
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2013-5-30
  得分:0 
想问下为什么代码中多处都出现到char呢,值的转换不是应该用int吗?因为我输出的字符乱码?
2013-12-05 00:28







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

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