0
点赞
收藏
分享

微信扫一扫

十进制整数N转化成B进制整数

老北京的热干面 2022-04-04 阅读 69

通过使用顺序栈的方式将十进制整数N转化成B进制整数;

#include <stdio.h>
#include <stdlib.h>
#define size 100       
typedef struct
{
	int data[size];
	int top;
}seqstack;
seqstack*s;//全局指针变量 

void initstack()    //置空 
{
	s->top=-1;    //所有操作必须先置空
} 

int stackempty()    //判断是否为空 
{
	return s->top==-1;    
}

int stackfull()    //判断是否为满 
{
	return s->top==size-1;
}

int push(int x)      //入栈 
{
	if(stackfull())    //自定义函数可以引用自定义函数 ,不需要通过实参输入; 
	{
		puts("栈满\n");    // 新大陆,直接输出字符串包括中文; 
		return 0;
	}
	s->data[++s->top]=x;return 1;    //栈的数组和栈的top ,先++在入 
}

int pop(int *y)    //出栈 
{
	if(stackempty()) 
	{
		puts("栈空");return 0; 
	}
	*y=s->data[s->top--];return 1; 
}

void conver(int n,int b)
{
	int x;
	s=(seqstack *)malloc(sizeof(seqstack));
	if(s==NULL)
	{
		puts("空间分配失败");exit(0);
	}
	initstack();
	if(n==0)
	printf("0"); 
	while(n)
	{
		if(push(n%b))//取余 
		n=n/b;//取整 
		else
		exit(0);
	}
	while(!stackempty())
	{
		if(pop(&x))//循环出栈 
		{
		if(x>=10)
		printf("%c",x+87);//十进制转换成十六进制形式 
		else
		printf("%d",x);
	    }
	    else
	    exit(0);
	}
}

void main()
{
	int n,b;
	printf("请输入n=");
	scanf("%d",&n);
	printf("请输入b=");
	scanf("%d",&b);
	conver(n,b);
}

兄弟们如果觉得这篇文章对你有一点小小的帮助的话,希望给一点小小的鼓励点一个赞吧,兄弟我在这里谢谢啦!

举报

相关推荐

0 条评论