题目需求:将一个十进制数值转换为任意N进制的数。(不考虑大数的问题)
结题思路:采用递归的形式处理,将十进制数值进行短除N的操作。如图所示:
结果为:余数的结果 从下往上读取:如图中的1->0->1.
C语言代码:
递归实现:
#include <stdio.h>
int main(){
void change(int n,int m);
//m代表是几进制,n代表需要转换的十进制数值
int m=2;
int n=0;
while(scanf("%d",&n) != EOF){
change(n,m);
printf("\n");
}
return 0;
}
void change(int n,int m){
if(n==0)
return ;
else{
//注意这两行语句的顺序,它决定了余数的读取顺序
//是由上往下还是由下往上,也就是怎样的输出顺序
change(n/m,m);
printf("%d",n%m);
}
}
数组实现:
#include"stdio.h"
main()
{
int n;
void change(int k,int n);
printf("请输入一个整数:");
scanf("%d",&n);
change(n,8);
return 0;
}
void change(int k,int n)
{
int p,a[20];
p=-1;
while(k)
{
p++;
a[p]=k%n;
k=k/n;
}
while(p>=0)
{
printf("%1d",a[p]);
p--;
}
printf("\n");
}