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

とてもシンプルです。

Number は がM(Q-1)返され0た場合にのみ出力され、それは value の値が である場合に発生しQます7

ゼロについては、最初にゼロを印刷する3つの位置に数字を印刷するようにprintfに要求しているためです。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 に答える