将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构——栈实现。
先看递归实现:
1 #include<stdio.h> 2 void to_two(int num); 3 int main() 4 { 5 int a = 10; 6 to_two(a); 7 8 return 0; 9 } 10 /*递归实现把一个数转成16/8/2进制*/ 11 //转16/8/2进制分别求余16/8/2,再除以16/8/2 12 //10 转 2进制 13 void to_two(int num) 14 { 15 if (num!=0) 16 { 17 int remainder = num % 2; 18 to_two(num/2); 19 printf("%d", remainder);//这个输出函数的位置如果和上一句对调位置,将顺序输出 20 } 21 else 22 { 23 24 } 25 }
递归的实现方式,需要一定的逻辑性,如果把上述的打印函数和递归调用调换位置,输出将反向。这里对于递归的基础知识不做解释,如果忘记了,查询相关资料。
这里用递归能够很好的实现把最后求出的数先打印出来,对于这种先进后出,后进先出的模型,很自然会想到栈的实现。
那么,下面用数组实现一个栈,完成这个转换:
时间: 2024-11-08 02:12:28