用栈实现,输入一个十进制数,转换成十六进制输出(C语言)

 我来答
仁昌爱娱乐
高粉答主

2020-03-02 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459801

向TA提问 私信TA
展开全部

工具/材料:以Microsoft Visual Studio 2010为例。

1、首先在桌面上,点击“Microsoft Visual Studio 2010”图标。

2、然后在该界面中,先定义栈最大的存储空间。

2、其次在该界面中,编写初始化空栈函数代码。

3、之后在该界面中,编写判断空栈函数代码。

4、接着在该界面中,编写判断栈满函数代码。

5、其次在该界面中,编写进栈、出栈函数代码。

6、接着在该界面中,编写进制转化函数代码。

7、之后在该界面中,编写清空栈函数代码。

8、最后在该界面中,编写主函数调用各个函数代码。

遗漏的沙砾
推荐于2016-09-10
知道答主
回答量:25
采纳率:0%
帮助的人:10.7万
展开全部
#include<stdio.h>
#include<stdlib.h>
#define initsize 20
#define increment 10
typedef char elemtype;
typedef struct stack{
elemtype *base;
elemtype *top;
int stacksize;
}stack;
void initstack(stack &s)//初始化栈
{s.base=(elemtype *)malloc(initsize*sizeof(elemtype));
if(!s.base)
exit(0);
s.stacksize=initsize;
s.top = s.base;}
void push(stack &s,elemtype e)//入栈,栈满则追加栈空间
{if(s.top-s.base>=initsize)
s.base=(elemtype *)realloc(s.base,(s.stacksize+increment)*sizeof(elemtype));
if(!s.base)
exit(0);
s.stacksize+=increment;
*s.top=e;
s.top++;
}
void pop(stack &s,elemtype &e)//出栈
{if(s.base==s.top)
printf("有错误");
else
e=*--s.top;
}
int empty(stack &s)//判栈空
{if(s.base==s.top)
return 1;
else return 0;
}
void clear(stack &s)
{if(s.base==s.top)
return ;
s.base=s.top;
}
void conversion(int n,int N)//进制转换
{int c;
char e;
stack s;
initstack(s);
while(n!=0)
{c=n%N;
n=n/N;
if(c<10)
*s.top++='0'+c;
else
{*s.top++='A'+c-10;
}
}
while(!empty(s))
{pop(s,e);
printf("%c",e);
}
clear(s);
}
void main()
{
int n,N;
printf("请输入十进制数:");
scanf("%d",&n);
printf("请输入需要转化进制:");
scanf("%d",&N);
printf("转化后的数是:");
conversion(n,N);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友591949a5e
2010-12-02
知道答主
回答量:59
采纳率:0%
帮助的人:26.9万
展开全部
小弟我喜欢C语言,但是是自学所以没学过数据结构,如果不用栈实现,小弟我可以马上给你写出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式