为什么此for循环条件不起作用?

时间:2019-03-01 06:38:58

标签: c++ arrays for-loop indexing conditional-statements

如果beta组件的索引是3的倍数,则尝试输出该组件的值。 我在for循环中设置了条件,但它仅在索引0处打印组件。在for循环条件中不可以吗?我真的需要在循环内使用if语句吗?

谢谢。

double beta[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };

cout << fixed << showpoint << setprecision(2);

for (int index = 0; index < 20 && index % 3 == 0; index++)
    cout << beta[index] << endl;

4 个答案:

答案 0 :(得分:2)

条件为假时,循环将停止。对于index == 1,条件为假。

如果您想要一个跳过迭代的循环,请在循环主体中使用if

但是对于这种简单情况,最好在每次迭代中将index增加3。

答案 1 :(得分:1)

循环的条件是:index < 20 && index % 3 == 0 此条件在index = 1为假,因此循环停止。 为此,请将条件分为两部分。如果for放一个,在if中放一个。以下是代码:

double beta[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };

cout << fixed << showpoint << setprecision(2);

for (int index = 0; index < 20 ; index++){      // First condition
    if (index % 3 == 0){                        // Second condition
        cout << beta[index] << endl;
    } 
}

希望有帮助!

答案 2 :(得分:1)

如果您尝试计算1 mod 3,它将等于 1 ,因为第二个条件将为false,因此程序仅在index = 0时才执行主体({{1 }})从1开始之后,您将永远不会输入for循环主体。希望有帮助。

答案 3 :(得分:0)

这个简短的答案在for循环条件下做什么?

for (int index = 0; ((index % 3) == 0 || (index++ && index++)) && index < 20 ; index++)
    cout << beta[index] << endl;

别忘了我们将index < 20放在条件的末尾。