几道C语言他题目 望高手指点一二

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:58:16
#include<stdio.h>
bin(int x)
{
if(x/2>0)
bin(x/2);
printf("%d",x%2);
}
main()
{
bin(12);
}

此题的运行结果是1100;但是不知道是怎样来的,望高手给些见解 不胜感激

#include<stdio.h>
void main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,n);
}

运行结果是1,1

而我自己的见解是运行结果是1,0,请教高手给点运行过程讲解
希望给点详细的运行过程 不胜感激

第一个问题,函数功能是将一个十进制数转换为二进制数,用递归实现。
第二个问题因为n=b>a,并且>号优先级高,因此b>a值为1,然后将1赋值给n应此n为1

第2道题 :n=b>a 这里 >是关系运算符 =是赋值运算符 关系运算符 优先级高于赋值运算符 所以先执行b>a 的判断 当然是真也就是1 所以N=1 K=1

1、递归,最外面一层x是12,然后进入第二层x是6,然后是第三层x是3,第四层x为1,此时x/2为0.5,强制转换为0,不进入下一层,开始执行第四层输出操作,1%2是1,返回第三层3%2是1,返回第二层,6%2是0,返回最外层,12%2是0,返回主函数,完成退出。

2、b>a和a<b都是1,n=1,k=1||1=1,结果就是1,1。