2

これは、私が完全に理解していない模擬試験の問題です。

コードフラグメントの場合

int i = 0, j = 0, k = 0;
for (i=-1; i<=10; ++i){ 
    j = i; ++k; 
}

コードを実行した後、変数の値を見つけるように求められます。

答えは次のとおりです。

 i = 11 j = 10 k = 12

やり方がわかりません、誰か助けてくれませんか?

4

5 に答える 5

3

手順は次のとおりです。

  1. ループが始まると、3 つの変数はすべてゼロになります。
  2. ループ初期化子はiマイナス 1 に設定します。
  3. Loop test:i <= 10が真なので、ループに入ります。
  4. ループ内でjは に設定されてiいるため、jもマイナス 1 です。
  5. kがインクリメントされるので、k1 になります。
  6. 反復が終了します。iのためにインクリメントされるので、++i0 にiなります。
  7. ループ テスト:iがゼロでi <= 10あるため、真であるため、再びループに入ります。

jこのように、 、 k、の順にループが続きiます。したがって、i10 にjなると、9 とk11 になります。その時点で:

  1. 最後にループに入ります。
  2. jも 10 になります。k12になる
  3. その後i、11 にインクリメントされます。ループ条件i <= 10は false で、ループは終了します。

i11jもそうです。kループが終了すると 10、12 になります。

重要な点は、最初のパスの後、ループに入るたびに、jより 1 小さく、 よりi1k大きいことですi。ループが終了しても、これは引き続き当てはまります。

于 2013-08-21T23:10:02.730 に答える
3

i は <= 10 でなければならないため、ループを終了するには 11 であり、ループの最後の反復内では i = 10 = j です。最初の繰り返しの後、k は 1 ですが、i は -1 です。ループを実行すると、次のことがわかります。

k = 1, i = -1
k = 2, i = 0
k = 3, i = 1
k = 4, i = 2
k = 5, i = 3
k = 6, i = 4
k = 7, i = 5
k = 8, i = 6
k = 9, i = 7
k = 10, i = 8
k = 11, i = 9
k = 12, i = 10

したがって、k = 12

于 2013-08-21T23:05:24.567 に答える
2

3 つの変数を分離します。ループが実行される回数である変数 k がインクリメントされることがわかります。いいえ。of time sit は -1 から 10 まで実行され、12 回の反復が行われたことになります。

k = 1,  i = -1,  j=-1
k = 2,  i = 0,   j=0
k = 3,  i = 1,   j=1
k = 4,  i = 2,   j=2
k = 5,  i = 3,   j=3
k = 6,  i = 4,   j=4
k = 7,  i = 5,   j=5
k = 8,  i = 6,   j=6
k = 9,  i = 7,   j=7
k = 10, i = 8,   j=8
k = 11, i = 9,   j=9
k = 12, i = 10,  j=10

この後、i は限界に達しましたが、最初にインクリメントしてからチェックします。したがって、i=11、k=12、j は i の値より 1 小さい値、つまり j= 10 になります。

于 2013-08-22T05:56:58.967 に答える
2
for (i=-1; i<=10; ++i){ 
    j = i; ++k; 
}

ループは次のとおりです。

i = i +1;     <-------+
   |                  |
check condition!------|--+
   |                  |  |
j = i;                |  |
   |                  |  | 
  k++;----------------+  |
   |                     |
   +<--------------------+
   |
other code

最後にループ

  i = 10
   condition == true
   j = 10;
   k = 12;

それで

i= i+1 という意味i = 11ですが、条件は false を示しています。ループエンド。

于 2013-08-21T23:07:44.423 に答える