谁帮我解释下以下代码,C语言用递归函数,实现将一个十进制整数转换成二进制整数输出

#include<stdio.h>
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}

int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n<0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}

我看不懂啊 求大神分析下 谢谢~!

#include<stdio.h>
void f(int n)/*可以自选一个值,画图解决问题*/
{
if(n) f(n/2);/*如果n大于0即为真,那么就n除2,再次调用函数*/
else return;/否则跳出/
printf("%d",n%2);/*输出1,0*/
}

int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n<0) break;
if(n==0) printf("0");
/*有错,你这新开了个条件,应该是if else,下条语句它是必然会执行的,逻辑错了*/
f(n);
printf("\n");
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

...用递归函数,把输入的一个十进制整数转换成二进制数输出
void f(int n){ if(n) f(n\/2);else return;printf("%d",n%2);} int main(){ int n;while(1){ scanf("%d",&n);if(n<0) break;if(n==0) printf("0");f(n);printf("\\n");} return 0;}

用递归算法将一个十进制正整数转化为相应的二进制数
include <iostream> using namespace std;int bit[65], Prime[1000], Index, temp;int* ToBinary(int n) { if(n == 0)return bit;bit[Index++] = n%2;ToBinary(n\/2);return bit;} int PalindromicNumber(int n) { if(n == 0)return temp;temp = temp*10 + n%10;PalindromicNum...

用递归函数将十进制转换为二进制
void d2n(unsigned long d,int n){ if(d>=n){ d2n(d\/n,n);} printf("%c","0123456789ABCDEF"[d%n]);} int main(){ unsigned long d;int n;scanf("%lu",&d);d2n(d,2);return 0;}

求十进制转换二进制C语言代码
#define NR(sizeof(int)*8) \/\/二进制位的个数 voiddeciToBin(intnum);\/\/十进制转换为二进制函数声明 \/*主函数*\/ intmain(void) { intnum; fprintf(stdout,"请输入一个正整数:"); \/*获取并检查用户输入*\/ while(1) { if(fscanf(stdin,"%d",&num)!=1) { fprintf(stderr,"输入错误!请重新输入:...

用C语言写的十进制数转换为二进制数的程序
{ if(n==0) return ;else jinzhi(n\/j,j);printf("%d",n%j);} void main(){ int n,j;printf("输入要转换的数,和要转换的进制范围在2-9之间:)";scanf("%d %d",&n,&j);jinzhi(n,j);printf("\\n")l;}递归算法,可以转换任意2-9之间的进制,如果要就100转换为2进制就输入...

c语言:编写函数,采用递归方法将任一整数转换为二进制形式。
int Into2nd(int x,int r[],int n)\/\/该函数返回值为二进制的位数 {if(x==0) {if(n==0) {r[0]=0; return 1;} else return n;} r[n]=x%2;return Into2nd(x\/2,r,n+1);} 使用方法:n=Into2nd(x,r,0);for (i=n-1;i>=0;i--) printf("%d",r[i]);...

大神来看。。递归函数c语言十进制转二进制输出二进制位数,,带返回值的...
下面的程序直接返回十进制表示的二进制结果,可能是你想要的吧,不过这样会有一个缺点,如果转换值太大会越界的;如果对返回结果的格式无要求的话,我可以帮你改成指针,那样就不会有越界的问题了!unsigned long convert(int level,int i){ unsigned long ret=0;if(i<2){ return (unsigned long)...

高手请帮忙,c语言中如何将:“十进制转换二进制 ”
二楼正解,其它回答都是门外汉式的回答.这是个很经典的题目,楼主一定要好好学.这个问题解决关键是:任何数在电脑中是以二进制形式存放的,这是一句非常有用的废话.你输入任一数,它已经以2进制的形式存在,你要做的就是把它显示出来而已.通过右移操作>>可以取出每一位的数值,能很好地解决这个问题....

c语言: 编写递归函数把输入的一个负整数转换成二进制输出
1、函数getBCode是题目要的递归函数,实现转二进制(最高位是符号位)。思路是十进制数绝对值除以2求余,得到反向二进制原码,反向创建链表保存结果,最终得到的单向链表就是完整二进制数原码,之后根据正负性,负数取反+1。链表头添加符号位。2、函数freeBny为释放链表,如要重复调用函数getBCode,每次...

十进制转化成二进制的代码 求帮助!!!
%d\\n",z);} 你的代码不能处理大的整数,给你个代码参考下,可处理较大整数,是用递归的。include<stdio.h> void ttor(int n);void main(){ int n;scanf("%d",&n);ttor(n);printf("\\n");} void ttor(int n){ if (n){ ttor(n\/2);printf("%c",n % 2 + '0');} } ...

相似回答