您的位置:首页 > 其它

输入一个1e9以内的10进制整数n和k(2<=k<=36),输出相应的k进制数

2009-10-18 13:08 309 查看
输入一个1e9以内的10进制整数n和
k(2<=k<=36)
,输出相应的k进制数

============

因为1e9即10亿,转换为最小的k=2共有30位,所以作为输出的数组char nk[30]

因为阿拉伯数字只有0~9一共10个,所以当K>10时,10=A,11=B,12=C以此类推直到35=Z

char word[36]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};


copy一段网上的10进制转为2进制:

25/2=12......1

12/2=6 ......0

6/2=3 ......0

3/2=1 ......1

1/2=0 ......1

可以发现规律,将n不断除以2,第一个得到余数作最低位,最后一个得到余数作最高位.

然后将余数转换成
为字符,并且将数位按倒序输入数组:

nk[i]=word[remainder];


输出则按倒序输出.

/*
Name:整数n转k进制数
Author:Dualeak
Date:2009-10-18
*/
#include "stdio.h"
int main(void)
{
char word[36]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
int n=3252, k=22;
char nk[30];
int quotient=n, remainder, i;
for(i=0;quotient>0;i++){
remainder=quotient%k;
quotient=quotient/k;
nk[i]=word[remainder];
}
for(;i >= 0;i--){
printf("%c",nk[i]);
}
printf("/n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐