2017-02-06 70 views
-4

我不確定爲什麼這段代碼打印「h = 13」而不是「h = 2」。有人有想法嗎?代碼打印什麼?練習C

#include <stdio.h> 

int main() { 
int j,h=1; 
for(j=0;j<50;j++) { 
     if(j%6==1) continue; 
     h++; 
     if(j==7 || j==14 || j==21) 
       break; 
} 
printf("h=%d",h); 
return 0; 
} 
+3

請自行試用。如果您沒有編譯器,請使用聯機編譯器。 –

+1

使用斷點逐行 –

+0

提示:當j是7時,表達式'j%6'的計算結果是什麼? – lurker

回答

3
  1. j = 0既不如果語句返回值1,因此h遞增。
  2. j = 1(j % 6 == 1),1%6將產生1的剩餘部分。聲明j % 6爲真,因此,h是未遞增。 ('%'是餘數運算符)
  3. j = 2j = 6這兩個if語句都不返回值1,因此h遞增。
  4. j = 7(j % 6 == 1),7%6將產生1的剩餘部分。聲明j % 6爲真,因此,h是未遞增
  5. j = 8j = 12這兩個if語句都不返回值1,因此h遞增。
  6. j = 13(j % 6 == 1),13%6將產生1的剩餘部分。聲明j % 6爲真,因此,h是未遞增
  7. 對於j = 14聲明j == 14 istrue並因此執行break語句。

h會遞增爲:j = 0,j = 2至j = 6,j = 8至j = 12,j = 14這是一個總的12倍。

合計12 + 1(h = 1)= 13