教师版,栈的进制数转换

数据结构第四次实验
不理解为什么t>10要t+55:

  • 代码未明确转换类型,适用于2-8-16进制转换
  • 2进制数为0、1
  • 8进制数为0、1、2、3、4、5、6、7
  • 16进制数为0、1、2、3、4、6、7、8、9、A B C D E F,
  • 所以进行16进制转换时,大于10的值要转换ASCII码值
#include<stdio.h>
#define max 50

typedef struct
{int data[max];
int top;}seqstack;
void convert(int n,int r)
{int t;
seqstack s;
s.top=-1;//初始化
if(n<0)//被除数为正数
printf("error");
if(n==0)
 s.data[s.top]=0;
while (n!=0)
{t=n%r;
s.data[++s.top]=t;//余数入栈
n=n/r;}//更新被除数
while(s.top!=-1)//栈不为空
{t=s.data[s.top--];
if(t<10)
printf("%5d",t);
else printf("%c",t+55);}//为什么加55
printf("\n");

}
main()
{int n,r;
printf("please input n:\n");
scanf("%d",&n);
printf("please input r");
scanf("%d",&r);
convert(n,r);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值