📜  门| GATE-CS-2017(套装2)|第 38 题

📅  最后修改于: 2021-09-27 05:36:57             🧑  作者: Mango

考虑下面的 C 程序片段,它旨在使用重复减法将 x 除以 y。变量 x、y、q 和 r 都是 unsigned int。

while(r >= y)
{
r = r - y;
q = q + 1;
}

在执行片段之前,变量 x、y、q 和 r 的以下哪个条件将确保循环在满足条件 x == (y*q + r) 的状态下终止?
(A) ( q == r ) && ( r == 0)
(B) ( x > 0 ) && ( r == x ) && ( y > 0 )
(C) ( q == 0 ) && ( r == x ) && ( y > 0 )
(D) ( q == 0 ) && ( y > 0 )答案: (C)
解释: x == ( y * q + r )
x=乘积,y=被乘数,q=商,r=余数

  • 对于要终止的循环,商必须为 0,所以只剩下选项 C 和 D
  • 如果 q=0 -> r=x 应该适用

因此,选项C是最合适的
这个问题的测验