通过使用顺序栈的方式将十进制整数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);
}
兄弟们如果觉得这篇文章对你有一点小小的帮助的话,希望给一点小小的鼓励点一个赞吧,兄弟我在这里谢谢啦!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)