将十进制整数数转换为K进制数整数

用c语言编写出来,k就先取2吧,明白了其中的原理就行

首先要懂转换机制,就是不断的取余,取整,最终为0时循环结束。
#include <iostream>
using namespace std;
int main()
{
int k,number;int kn[100];int i;
cout<<"请输入要转换的进制 :"<<endl;
cin>>k;
cout<<"请输入要转换的数 :"<<endl;
cin>>number;i=0;
while(number!=0)
{
kn[i]=number%k;
number=number/k;
i++;
}
cout<<"转换为"<<k<<"进制的结果是 :" ;
for(int j=i-1;j>=0;j--)
cout<<kn[j];
cout<<endl;
//system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第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");
}

相似回答