数据结构第四次实验
不理解为什么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);}