这涉及到一个算法:对于数值n,想把它转换成二进制(进制可以自己在2-10之间选择);例如:4如何转换成2进制呢?首先,偶数的二进制最后一位是0,而奇数时1;可以通过4%2得出二进制的最后一位1或0.对于数值n,最后一位n%2;计算出第一个数值恰好是最后的一位数字。这需要尾递归实现。为了得出下一位,原数除以2,如果此书是偶数,下一个二进制的数值是0,如果是奇数则为1. 如:4/2=2,则下一位二进制数0,重复计算2/2=0.何时停止计算呢?被2除的结果小于2时停止!4的二进制为100;代码如下:
#include<stdio.h>
void to_base_n(int x,int base);
int main(void){
int number;
int a;
printf("Enter an integer(q to quit): ");
while(scanf("%d",&number)==1){
printf("Enter number base(2-10): ");
scanf("%d",&a);
to_base_n(number,a);
putchar('/n');
printf("Enter an integer(q to quit): ");
}
printf("Bye!/n");
return 0;
}
void to_base_n(int x,int base){
int r;
r=x%base;
if(x>=2)
to_base_n(x/base,base);
putchar('0'+r);
return;
}