考虑下面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