请c语言高手帮忙解释一下!!!答案要详细一点哦!!!谢谢!!!

2024-12-29 13:20:12
推荐回答(3个)
回答1:

B
这是递归调用 先是x=20,之后进入调用
if(x/2>0)fun(x/2);又进入调用,x依次等于20,10,5,2,1,到x=1了才到达printf("%d",x%2);打印完x=1的printf就打印x=2的,一直按顺序打印到x=20的,因此输出就是10100
把那个循环拆开来是这样的~
if(x/2>0){x=x/2;/*x=10*/
if(x/2>0){x=x/2;/*x=5*/
if(x/2>0){x=x/2;/*x=2*/
if(x/2>0){x=x/2;/*x=1*/
if(x/2>0){x=x/2;
printf("%d\n",x%2);}
printf("%d\n",x%2);}
printf("%d\n",x%2);}
printf("%d\n",x%2);}
printf("%d\n",x%2);}
--b这样会比较好理解吧~
学C是要学会自己解决问题的知道不~~

回答2:

B)10100

回答3:

循环次数及每次的x:20, 10, 5, 2, 1
每次打印x除2的余数,因为是递归调用,打印顺序反过来
1%2=1, 2%2=0, 5%2=1, 10%2=0, 20%2=0

所以结果是10100