我的代码是:
#include
using namespace std;
int main()
{
int num, n, i=0, j, a[20];
cout<<"输入要转换的十进制整数:";
cin>>num;
cout<<"输入要转换的进制:";
cin>>n;
do
{
i++;
a[i]=num%n;
num=num/n;
}while(num!=0);
for(j=i;j>=0;j--)cout<<a[j];
cout<<endl;
return 0;
}
为什么输出的前几位是正确答案,后面总是有4253504呢
因为后面的没有赋值,所以是随机值
#include <stdio.h>
#include <math.h>
int main()
{
int n,r,i,t,b;
char a[100];
char c[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //a数组用储存转后每位的数字,//c用来代表超过9后每位的数字。
scanf("%d%d",&n,&r);
t=n;
t=(int)fabs(t);
for(i=0;;i++)
{
b=t%r;
if(b>=10)
a[i]=c[b-10];
else
a[i]=b+'0';
t=(t-b)/r;
if(t==0)
break;}
if(n<0)
printf("-");
for(;i>=0;i--)
printf("%c",a[i]);
printf("\n");
return 0; }
因为你那个后面的for(;i>=0;i--)这里的a[0]没有赋值,局部变量是随机数,而全局是0所以就输出随机数
我用函数实现,其实就是个倒叙输出
#include<bits/stdc++.h>
using namespace std;
char c[100]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n,k;
void print(int x){
if(!x)return;
print(x/k);
printf("%c",c[x%k]);
return;
}
int main(){
cin>>n;
cin>>k;
print(n);
return 0;
}