4

Elo,我从旧考试中得到了这个代码片段。这很棘手,我需要一些帮助来弄清楚它是如何打印“007”的。

#include <stdio.h>
/* Desmond Llewelyns */
int M(int Q);
int main(void)
 {

   M(9);
   return 0;
 }
int M(int Q)
 {
   if(Q>1) 
     if(M(Q-1)==0)
       printf("%03d\n", Q);

   return Q-6;
 } 
4

2 回答 2

8

这很简单。

M(Q-1)仅当返回时才会打印数字0,并且当值为Qis时会发生这种情况7

关于零,这是因为您要求 printf 在开头打印零的 3 个位置打印数字。在这里printf("%03d\n", Q);阅读更多。

于 2012-11-03T19:41:59.853 回答
3

当 Q 等于 7 时,M(Q-1) 返回 0

printf("%03d\n", Q) 将打印 7 到 3 个位置,结果为 007

于 2012-11-03T19:43:21.223 回答