C语言 十进制转二进制 使用递归

decimalToBinary.c:

#include
void decimalToBinary(int n);
void main()
{int n;char again;do{printf("输入10进制:");scanf("%d",&n);printf("%d的二进制:",n);decimalToBinary(n);printf("\n继续[y/n]?:");scanf("%s",&again);}while(again=='y'||again=='Y');printf("程序结束!\n");
}
//long long decimalToBinary(int n)//二进制转成10进制:除2取余,逆序排列
void decimalToBinary(int n)
{static long long binary=0;static int i=1;//使用static,静态局部变量使得i可以累加int remainder=0;//余数不使用,静态局部变量,每次递归的结果不互相干扰static int count=0;if(n!=0){remainder=n%2;// 取余数
//        printf("步骤=%d,%d/2--->余数=%d,商=%d\n",++count,n,remainder,n/2);n=n/2;//除以2decimalToBinary(n);//求下一个余数printf("%d",remainder);//递归返回是自然就逆序的,打印的余数已经是逆序好的}
}

测试:

输入10进制:12
12的二进制:1100
继续[y/n]?:y
输入10进制:16
16的二进制:10000
继续[y/n]?:y
输入10进制:65535
65535的二进制:1111111111111111
继续[y/n]?:n
程序结束!





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部