大门| 2008年大门|问题80

考虑下面C中编写的代码片段:

null

void f ( int n)
{
if (n <= 1)  {
printf ( "%d" , n);
}
else {
f (n/2);
printf ( "%d" , n%2);
}
}


以下哪种实现将为f(173)生成与上述代码相同的输出? P1

void f ( int n)
{
if (n/2)  {
f(n/2);
}
printf ( "%d" , n%2);
}


P2

void f ( int n)
{
if (n <=1)  {
printf ( "%d" , n);
}
else {
printf ( "%d" , n%2);
f (n/2);
}
}


(A) P1和P2 (B) 仅限P2 (C) 仅P1 (D) P1和P2都不是 答复: (C) 说明:

这里,函数f基本上打印数字的二进制表示。 函数f1还打印数字的二进制表示形式 函数f2打印二进制表示,但顺序相反。 f的输出为:-10101101 f1的输出为:-10101101 f2的输出为:-10101

因此,答案是选项(C),它仅是P1。

这个解决方案是由 阿尼尔·赛克里希纳·德瓦拉塞蒂 .

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享