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

typedef int SElemType;
typedef int Status;
typedef struct{

SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR 0
#include<malloc.h>
#include<stdio.h>

Status InitStack(SqStack &s)
{
s.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base) return(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}

Status Push(SqStack &s,SElemType e)
{
SElemType*l_temp;
if((s.top-s.base)>=s.stacksize)
{
l_temp=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!l_temp) return(OVERFLOW);
s.base=l_temp;
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*(s.top++)=e;
return OK;
}

Status Pop(SqStack &s,SElemType &e)
{
if(s.top==s.base) return ERROR;
e=*(--s.top);
return OK;
}
int StackEmpty(SqStack s)
{
if(s.base=s.top) return 1;
else return 0;
}
void conversion(void)
{
SqStack s;
int N,b;
SElemType e;

InitStack(s);
scanf("%d%d",&N,&b);
while(b>1&&N>0)
{
Push(s,N%b);
N=N/b;
}
while(!StackEmpty(s))
{
Pop(s,e);
printf("%d",e);
}
}
void main()
{
conversion();
}


不知道为什么总是得不到正确的结果!

搜索更多相关主题的帖子: 数制 base define SElemType int 
2006-11-05 23:06
hanshanyeyu
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-26
收藏
得分:0 


不知道为什么总是得不到正确的结果!


2006-11-05 23:07
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"

#define STACKSIZE 100
#define STACKINCREASE 10

typedef int type;
typedef struct stack
{
type *top;
type *base;
int stacksize;
}Stack;

void Init(Stack *s)
{ /*初始化栈*/
s->base=(type *)malloc(sizeof(type)*STACKSIZE);
s->top=s->base;
s->stacksize=STACKSIZE;
}

void Destory(Stack *s)
{ /*销毁栈*/
s->stacksize=0;
free(s->base);
}

void Clear(Stack *s)
{ /*置为空栈*/
s->top=s->base;
}

int Empty(Stack *s)
{ /*判断是否为空栈,如果是,则返回1,否则返回0*/
if (s->top==s->base)
return 1;
else
return 0;
}

int Length(Stack *s)
{ /*返回栈的长度*/
return s->top-s->base;
}

type Gettop(Stack *s)
{ /*返回栈顶元素*/
if (s->top==s->base)
printf("The stack is empty!\n");
else
return *(s->top-1);
}

void Push(Stack *s,type e)
{ /*入栈操作*/
if (s->top-s->base>=STACKSIZE)
{
s->base=(type *)realloc(s->base,(STACKSIZE+STACKINCREASE)*sizeof(type));
s->top=s->base+s->stacksize;
}
*(s->top++)=e;
}

type Pop(Stack *s)
{ /*出栈操作,并返回栈顶元素*/
if (s->top==s->base)
printf("The stack is empty!\n");
s->top=s->top-1;
return *(s->top);
}

void conversion(Stack *s)
{ /*数制转换*/
int n,m,flag=0;
Init(s);
printf("Please input 10 jin zhi shu:");
scanf("%d",&n);
printf("\nPlease input the style you want to convert:");
scanf("%d",&m);
while (n)
{
flag=0;
if (n%m>9 && n%m<16)
{
switch(n%m)
{
case 10:
flag=1;
Push(s,65);
break;
case 11:
flag=1;
Push(s,66);
break;
case 12:
flag=1;
Push(s,67);
break;
case 13:
flag=1;
Push(s,68);
break;
case 14:
flag=1;
Push(s,69);
break;
case 15:
flag=1;
Push(s,70);
break;
}
}
if (flag==0)
Push(s,n%m);
n=n/m;
}
printf("\nThe %d jin zhi shu is:",m);
while (!Empty(s))
{
if (Gettop(s)>=65)
printf("%c",Pop(s));
else
printf("%d",Pop(s));
}
}

int main(void)
{
Stack s;
conversion(&s);
getch();
return 0;
}
试试这个


2006-11-06 12:39
快速回复:数制转换的问题
数据加载中...
 
   



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

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