您的位置:首页 > 编程语言 > C语言/C++

C语言实现进制转换——超图面试题

2014-11-05 17:13 267 查看
 递归:递归的原理,就是自己调用自己本身。存在一个顺序的问题,如果在递归前的是顺序执行,递归后的是逆序执行,如下: 

void gogogo()
{
//递归之前
gogogo();
//递归之后
}


递归
  下面实现进制转换就是利用的这个原理。

代码如下:

#include<stdio.h>
#include<stdlib.h>
void  toletter(int num)
{
switch (num)
{
case 10:
printf("%c", 'a'); break;
case 11:
printf("%c", 'b'); break;
case 12:
printf("%c", 'c'); break;
case 13:
printf("%c", 'd'); break;
case 14:
printf("%c", 'e'); break;
case 15:
printf("%c", 'f'); break;
default:
printf("%d", num); break;
}
}
//十进制转二进制
void convertto2(int num)
{
if (num ==1|| num==0)
{
printf("%d",num);
}
else
{
int n=num / 2;
convertto2(n);
printf("%d",num %2);//如果把这句话放在convertto2(n);之前就是顺序执行,显示是逆序,所以实现了余数的倒序排列。
}
}
//十进制转八进制
void convertto8(int num)
{
if (num  < 8)
{
printf("%d", num);
}
else
{
int n = num / 8;
convertto8(n);
printf("%d", num % 8);
}
}
//十进制转十六进制
void convertto16(int num)
{
if (num<16)
{
toletter(num);
}
else
{
int n = num / 16;
convertto16(n );
toletter(num % 16);
}

}

void main()
{
int num;
printf("请输入一个整数");
scanf_s("%d",&num);
printf("\n十进制转二进制:");
convertto2(num);
printf("\n十进制转八进制:");
convertto8(num);
printf("\n十进制转十六进制:");
convertto16(num);
system("pause");
}


递归图解

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐