请教一道C++题目思路与源码:输入K进制的正整数N,请把N化为L进制后输出。(N<1000000;L,K<=16) 有多组数据。 输入格式: K N L 输入样例: 8 10 2 10 10 16 输出样例: 1000 A
请问一下,这样做错在哪?
#include
int k,n,l,s,b[100],c,d;
char a[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int main(){
while(scanf("%d%d%d",&k,&n,&l)){
c=s=0;
d=1;
while(n){
s=s+n%10*d;
n/=10;
d*=k;
}
while(s){
b[++c]=s%l;
s/=l;
}
for(int i=c;i>0;i--)printf("%c",a[b[i]]);
printf("\n");
}
}
用栈的思想可以解决进制转换的问。
算法如下(以十进制转换为二进制为例):
void conversion(){
InitStack(S); // 构造栈
scanf("%d",N);
while(N){
Push(S,N%2);
N=N/2;
}
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
}
先把K进制转化为十进制,再从十进制转化为L进制
各位帮忙看看这个错在哪了,多指点,谢谢