第1个回答 推荐于2016-03-11
#include<stdio.h>
void main()
{ char str[20]; int i,k=0,m=0,n=0,x;
scanf("%d,%d",&m,&k); printf("%dD=(",m);
while ( m ) { x=m%k; str[n]=( x>9 )?(x-10+'A'):(x+'0'); n++; m/=k; }
for ( i=0;i<n;i++ ) printf("%c",str[n-i-1]);
printf(")%d\n",k);
}
k最大是36进制(因为字母用完了不好显示的限制)
运行示例:输入2468,16输出2468D=(9A4)16括号内的数是输出的目的计数,括号外的16表示进制本回答被提问者和网友采纳
第2个回答 2013-09-10
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int DtoN(char dother[],int d,int n)
{
int i=0;
while(d>=n)
{
dother[i]=d % n;
if(dother[i]>10)
dother[i]=dother[i]-10+'A';
else
dother[i]='0'+d % n;
d/=n;
i++;
}
if(d>0)
{
dother[i]=d % n;
if(dother[i]>10)
dother[i]=dother[i]-10+'A';
else
dother[i]='0'+d % n;
}
else
i--;
return i;
}
int main()
{
int dDegit,N,num;
char dOther[64],fh;
int i;
printf("输入一个十进制数:");
scanf("%d",&dDegit);
if(dDegit<0)
fh='-';
else
fh=' ';
dDegit=abs(dDegit);
printf("输入你想转换为的进制基数:");
scanf("%d",&N);
num=DtoN(dOther,dDegit,N);
printf("\n将十进制数%d转换为%d进制值为:%c",dDegit,N,fh);
for(i=num;i>=0;i--)
{
printf("%c",dOther[i]);
}
printf("\n\n");
}