一道2c的题

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:19:18
#include<stdio.h>
void fun(int x)
{if(x/2>0) fun(x/2);
printf("%d",x);}
main()
{fun(3);printf("\n");}
为什么不输出1呢?

输出的是13正确啊
这是流程
fun(3)
x=3
{
(x/2=1>0)
fun(1)
{
(x/2=0)//结束
printf 1
}
}
printf 3

如果屏幕一闪而过的话就在最后加上getch();

其实吧!这个程序你没有完全的分析清楚:给你现两个介意:
第一、修改一下程序:如下:
#include<stdio.h>
void fun(int x)
{
if(x/2>0)
fun(x/2);
printf("%d\n",x); /*看好啦!这行多了一个换行符*/
}
main()
{
fun(3);
printf("\n");
}
这样的结果是:
1
3
如果这样修改:
#include<stdio.h>
void fun(int x)
{
if(x/2>0)
fun(x/2);
else
printf("%d",x); /*看好啦!多了一个else */
}
main()
{
fun(3);
printf("\n");
}
这样的结果是:1
这样你应该明白啦吧!fun 中的printf不是if 条件句的分支!所以结果就不样啦!
加油啊!