代码打印什么?在C中锻炼

时间:2017-02-06 19:00:46

标签: c

我不确定为什么这段代码打印“h = 13”而不是“h = 2”。有没有人有想法?

#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;
}

1 个答案:

答案 0 :(得分:3)

  1. j = 0 if语句都没有返回值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 is true ,因此会执行break语句。
  8. h会增加:j = 0,j = 2到j = 6,j = 8到j = 12,{ {1}} = 14,总共12次。

    总计12 + 1(j)= 13