c语言用栈写10进制转换为r进制,利用栈的基本操作将一个十进制的正整数转换成R进制数...

#include

#include

#include

#define stack_init_size

100

#define stackincrement

10

typedef struct sqstack

{

int

*base;

int

*top;

int

stacksize;

} sqstack;

int StackInit(sqstack

*s)

{

s->base=(int

*)malloc(stack_init_size *sizeof(int));

if(!s->base)

return

0;

s->top=s->base;

s->stacksize=stack_init_size;

return

1;

}

int Push(sqstack *s,int

e)

{

if(s->top-s->base>=s->stacksize)

{

s->base=(int

*)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int));

if(!s->base)

return

0;

s->top=s->base+s->stacksize;

s->stacksize+=stackincrement;

}

*(s->top++)=e;

return

e;

}

int Pop(sqstack *s,int

e)

{

if(s->top==s->base)

return

0;

e=*--s->top;

return

e;

}

int stackempty(sqstack

*s)

{

if(s->top==s->base)

{

return

1;

}

else

{

return

0;

}

}

int conversion(sqstack

*s)

{

int

n,e=0,flag=0;

printf("

----------------------------------------\n");

printf("| |\n");

printf("| 学号: 姓名: |\n");

printf("| |\n");

printf("| 版权所有请勿盗版 |\n");

printf("| |\n");

printf("

----------------------------------------\n");

printf("输入要转化的十进制数:\n");

scanf("%d",&n);

printf("要转化为多少进制:2进制、8进制、16进制填数字!\n");

scanf("%d",&flag);

printf("将十进制数%d转化为%d进制是:\n",n,flag);

while(n)

{

Push(s,n%flag);

n=n/flag;

}

while(!stackempty(s))

{

e=Pop(s,e);

switch(e)

{

case 10:

printf("A");

break;

case 11:

printf("B");

break;

case 12:

printf("C");

break;

case 13:

printf("D");

break;

case 14:

printf("E");

break;

case 15:

printf("F");

break;

default:

printf("%d",e);

}

}

printf("\n");

return

0;

}

int main()

{

sqstack

s;

StackInit(&s);

conversion(&s);

return

0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值