2012-03-11 5 views
0
int main(int i, int j) { 
for (i=4; i>0; i--) { 
    j=i;  
    while (j>=0) { 
     printf("X"); 
     j--; 
     } 
    printf("%lf\n", (1.0*(i))/(j+2)); 
    } 
} 

出力:誰かがこの機能のためにどのように出力が得られたか説明できますか?

XXXXX 4.0 
XXXX 3.0 
XXX 2.0 
XX 1.0 
+0

あなたはどのような部分を理解していないのですか? – Blender

+0

最初の行が5 "X"を印刷するのはなぜですか?なぜ最初の数字は4.0ですか? –

+0

while(j> = 0)ループはjが4に設定され、j == -1のときに終了するため、5 "X"を出力することがあります。 –

答えて

0

それは>= 0チェックによるXj+1回を印刷しますので、まあ、jが、iに設定されています。次に、ijで割り、現在は-1 + 2になります.iとなり、改行が始まる前に画面に出力されます。

+0

さて、最初の行が5 "X"を印刷するのはなぜですか?なぜ最初の数字は4.0ですか? –

+0

4つのXが5つの数字であるため、5つのXを印刷します。 i = 4でjを-1で割った2が1であるので、4を出力します。 – macduff

1

>=記号はおそらくあなたを混乱させるでしょう。コードはを4回ではなく1行目に5回印刷します。その一方で、j = 0になると、もう一度ループが繰り返されるためです。

whileループ終了後の基本的には、jの値は-1です。それを最後のprintfに置き換えてください。残りの出力は意味があります。

>=>に変更すると、コードによって正しい出力が生成されます。

+0

ありがとう、しかし値4.0はどのようにして得られましたか? –

+0

ループの最後に 'j = -1'があるので、'(1.0 *(i))/(j + 2)= i /(-1 + 2)= i'です。 – Blender

1

なぜ最初の行は5 "X's"を印刷しますか? &なぜ最初の数字は4.0ですか?

jはJ = 4,3,2,1,0の値をとり、ので。毎回Xを5X印刷しています。

ループjが-1になった後。

1.0*(4) /(-1+2) =>(4.0/1) =>4.0

したがって、出力はXXXXX 4.0

+0

多くのお手伝いをしてくれてありがとう! –

関連する問題