2.编程序,利用顺序栈或链栈的基本操作(初始化、进栈、出栈及获取栈顶元素)来实现数制转换,并设计主函数来进行调用。

2.编程序,利用顺序栈或链栈的基本操作(初始化进栈出栈及获取栈顶元素实现数制转换,并设计主函数来进行调用

#include<stdio.h>
#include<malloc.h>
#define  MAXSIZE  100
#define  ERROR  0
#define  OK  1
typedef int SElemType;
typedef int Status;
typedef struct
{
		SElemType   *base;
		SElemType   *top;
		int stacksize;
}SqStack;
//初始化
Status InitStack( SqStack &S )
{
	S.base =new SElemType[MAXSIZE];
	if( !S.base ) 	return ERROR;
	S.top = S.base;
	S.stacksize = MAXSIZE;
	return OK;
}
//判断栈是否为空
bool StackEmpty( SqStack S )
{
	if(S.top == S.base) return true;
   else return false;
}
//进栈
Status Push( SqStack &S, SElemType e)  
{
	if( S.top - S.base== S.stacksize ) // 栈满
        return ERROR; 	
	*S.top++=e;
	return OK;
}
//出栈
Status Pop( SqStack &S, SElemType &e)  
{
	if( S.top == S.base ) // 栈空
        return ERROR; 	
	e=*--S.top;
	return OK;
}
//对于任意一个非负十进制数,打印输出与其等值的八进制数
void conversion(int N,int r)
{//对于任意一个非负十进制数,打印输出与其等值的八进制数
   SElemType e;
   SqStack S;
	InitStack(S);	//初始化空栈S
   while(N) {//当N非零时,循环
	Push(S,N%r);	//把N与8求余得到的八进制数压入栈S
     	 N=N/r;		//N更新为N与8的商
   }
   while(!StackEmpty(S))//当栈S非空时,循环
   {
      Pop(S,e);		//弹出栈顶元素e
      printf("%d",e);		//输出e
   }
}
void main()
{
	int N,r;
	printf("请输入十进制:");
	scanf("%d",&N);
	printf("转换为2或8进制:");
	scanf("%d",&r);
	conversion( N, r);
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安小生学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值