2 gdhub gdhub 于 2017.09.06 17:55 提问

请教一道进制转换的C++题目思路与源码
c++

请教一道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");
}
}

3个回答

wobenqinren
wobenqinren   2017.09.06 19:14

用栈的思想可以解决进制转换的问。
算法如下(以十进制转换为二进制为例):
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);
        }

}

sinat_31803737
sinat_31803737   2017.09.06 19:15

先把K进制转化为十进制,再从十进制转化为L进制

gdhub
gdhub   2017.09.18 08:29

各位帮忙看看这个错在哪了,多指点,谢谢

Csdn user default icon
上传中...
上传图片
插入图片