软件水平考试

易错题:conv(b) int b; { if(b>=2)conv

来源:网考网软件水平 所有评论

根据网考网考试中心的统计分析,以下试题在2019/2/24日软件水平考试程序员习题练习中,答错率较高,为:69%
【分析解答题】conv(b)
int b;
{ if(b>=2)conv(b/2);
printf("%d",b%2);
return;

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

说明:本程序执行时从键盘上输入:22后跟回车键。
,答错率:69%
试题解析:

【解析】主函数中输入整数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/2=1) 第5次调用函数(b=1),不满足条件,执行输出语句,输出结果为 b%2=1%2=1 执行第5次调用的返回,执行第今次调用时的输出语句,输出结果为b%2=2%2=0 执行第4次调用的返回,执行第3次调用时的输出语句,输出结果为b%2=5%2=1 执行第3次调用的返回,执行第2次调用时的输出语句,输出结果为b%2=11%2=1 执行第2次调用的返回,执行第1次调用时的输出语句,输出结果为b%2=22%2=0 执行第1次调用的返回,将返回主函数,结束程序的运行。 所以程序运行的输出结果是:10110。 【参考答案】10110。 查看试题解析出处>>

相关推荐

发布评论 查看全部评论