| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1500 人关注过本帖, 1 人收藏
标题:数制转换(错在那)
只看楼主 加入收藏
我loveC
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-2-28
收藏(1)
 问题点数:0 回复次数:8 
数制转换(错在那)
#include<malloc.h>
#include<stdio.h>
#define STACK_INIT_SIZE 100
#define STACKINCERMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR 0
typedef struct{
    int *base;
    int *top;
    int stacksize;}sqstack;
  int initstack(sqstack *s)
 {  s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
    return OK;}
  void push(sqstack *s ,int e)
 { if(s->top-s->base>=s->stacksize)
{  s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));
if(!s->base)exit(OVERFLOW);
 s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;}
 *(s->top++)=e;}
 void pop(spstack *s,int *e)
{ if(s->top==s->base)
   return ERROR;
   *e=*(--s->top);}
main()
 {int n,m,e;
  initstack(&s);
 clrscr();
 scanf("%d%d",&n,&m);
 while(n){ push(&s,n%m);
 n=n/m;}
  while(!(s.top==s.base))
 {pop(&s,&e);
  if(e<=q)
  printf("%d",e);
  else
  printf("%c",e-10+'A');
}
 }
搜索更多相关主题的帖子: 数制 
2008-03-29 14:09
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
我晕,你的风格让我难受

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-30 09:25
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
收藏
得分:0 
回复 1# 的帖子
数据结构课本上有类似的算法哦!
2008-03-30 09:28
江湖五痕
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-31
收藏
得分:0 
风格我也不喜欢!这个太紧凑了!!
2008-03-31 16:58
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
编程风格确实too horrible

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2008-03-31 19:42
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
我很忙,我花时间帮你改,希望你以后注意编程风格,多看论坛上高手的代码。
你的程序里有好多拼写错误,命名有点也不太好,一定要注意!!!
#include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
//#include <conio.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR 0

typedef struct
{
    int *base;
    int *top;
    int stacksize;
}sqstack;

int initstack(sqstack &s)
{  
    s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
    s.top=s.base;
    s.stacksize=STACK_INIT_SIZE;
    return OK;
}

void push(sqstack &s ,int e)
{
    if(s.top-s.base>=s.stacksize)
    {  
        s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
        if(!s.base)
            exit(1);
        s.top=s.base+s.stacksize;
        s.stacksize+=STACKINCREMENT;
    }
    *(s.top++)=e;
}
int pop(sqstack &s,int &e)
{
    if(s.top==s.base)
        return ERROR;
    e=*(--s.top);
    return 1;
}
int main()
{
    int n,m,e;
    sqstack s;
    initstack(s);
//    clrscr();
    scanf("%d%d",&n,&m);
    while(n)
    {
        push(s,n%m);
        n=n/m;
    }
    while(!(s.top==s.base))
    {
        pop(s,e);
        if(e<=9)
            printf("%d",e);
        else
            printf("%c",e-10+'A');
    }
    return 0;
}

上善若水,水善利万物而不争,处众人之所恶
2008-04-05 15:18
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
我以前写的,差不多
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define STACK_INIT_SIZE 100//初始分配量
#define STACKINCREMENT 10//分配增量

typedef struct ///////定义结构
{
    int *base;
    int *top;
    int stacksize;
}SqStack;

void InitStack(SqStack &S)///初始化栈
{
    S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int));
    if(!S.base)exit(1);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
}

int GetTop(SqStack &S,int &e)///获得栈顶元素
{
    if(S.top==S.base)return 0;
    e=*(S.top-1);
    return e;
}

void Push(SqStack &S,int e)///入栈
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
        if(!S.base)exit(1);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
}

int Pop(SqStack &S,int &e)///出栈
{
    if(S.top==S.base)exit(1);
    e=* --S.top;
    return e;
}
bool StackEmpty(SqStack &S)//判空
{
    if(S.base==S.top)return true;
    return false;
}

void Conversion()//进制转换
{
    int N,e;
    SqStack S;
    InitStack(S);
    printf("input the number which you want to conver:");
    scanf("%d",&N);
    while(N)
    {
        Push(S,N%2);
        N=N/2;
    }
    while(!StackEmpty(S))
    {
        Pop(S,e);
        printf("%d",e);
    }
}

int main()
{
    Conversion();
    system("pause");
    return 0;
}

上善若水,水善利万物而不争,处众人之所恶
2008-04-05 15:19
张信哲
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2008-4-3
收藏
得分:0 
我喜欢你的格式,哈
2008-04-08 15:05
张信哲
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2008-4-3
收藏
得分:0 
//我也贴下,嘿嘿

#include<stdio.h>   
#include<malloc.h>
#define Maxsize 30   

#define stack_init_size 100
#define stackincrement 20

typedef struct      
{
    int s[Maxsize];
    int *top;
    int *base;
}stack;

void initstack(stack *st)   
{
    (*st).base=(int *)malloc(stack_init_size*sizeof(int));
    (*st).top=(*st).base;
}

int push(stack *st,int x)  
{
        *st->top++=x;
    
        return 1;

}

int stackempty(stack st)   
{
    return(st.top==st.base);
}

int pop(stack *st,int *x)  
{
        *x=*--(*st).top;
        return 1;

}

void main()
{
    stack st;
    st.base=st.top=0;   
    initstack(&st);  
    int n;     
    scanf("%d",&n);
    while(n)
    {
        push(&st,n%2);
        n=n/2;
    }
    while(!stackempty(st))
    {
        int e;
        pop(&st,&e);
        printf("%d",e);
    }
    printf("\n");
}
2008-04-09 20:46
快速回复:数制转换(错在那)
数据加载中...
 
   



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

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