软件水平考试

conv(b) int b; { if(b>=2)con

2016年01月05日来源:软件水平考试 所有评论

试题来源:2013年软考程序员考前模拟试题及答案解析(7)(8)
【分析解答题】conv(b)
int b;
{ if(b>=2)conv(b/2);
printf("%d",b%2);
return;

main()
{ int d;
scanf("%d",&d);
conv(d);

说明:本程序执行时从键盘上输入:22后跟回车键。

网考网解析:
【解析】主函数中输入整数22存入变量d中,然后调用函数。conv()。此时将把实参d中的22传递给形参b。然后再执行函数体,函数体中前面一条语句是单分支语句,当b>=2时再用“b/2”调用自己,显然这是一个递归调用的函数。下面我们来详细分析递归调用的过程: 第1次调用函数(b=22),满足条件,引起第2次调用自己(b/2=11) 第2次调用函数(b=11),满足条件,引起第3次调用自己(b/2=5) 第3次调用函数(b=5),满足条件,引起第4次调用自己(b/2=2) 第4次调用函数(b=2),满足条件,引起第2次调用自己(b... 查看试题解析出处>>

发布评论 查看全部评论

相关推荐