用步骤分析代码

时间:2016-04-30 04:32:07

标签: c++

所以我知道代码的输出是8 2,但有人可以告诉我如何的价值   我和j在每一步之后都会改变。

以下是代码的链接:

using namespace std;

int main()
{
    int i; int j = 0;
    for ( i = 0; i < 7; i++)
    { 
        if(i % 2 == 1) 
        { 
            i = i + 2; j++;
        }
        else
        { 
            j = j + 2; 
        }
        j--;
    }

    cout << i <<" "<< j;
}

2 个答案:

答案 0 :(得分:4)

将是

   int i; int j = 0;           // i==? j==0
----------------------------------------------
   for ( i = 0;                // i==0 j==0
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==0 j==2
   j--;                        // i==0 j==1
                       i++)    // i==1 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==3 j==2
   j--;                        // i==3 j==1
                       i++)    // i==4 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==4 j==3
   j--;                        // i==4 j==2
                       i++)    // i==5 j==2
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==7 j==3
   j--;                        // i==7 j==2
                       i++)    // i==8 j==2
----------------------------------------------
                i < 7;         // FALSE

答案 1 :(得分:-1)

j++移除if-true,在j=j+2中将j++更改为if-false,以便在{{1}之后j--,简化您的代码应该删除。而且理解代码变得更容易。

if_else

说明:

int main()
{
    int i; int j = 0;
    for ( i = 0; i < 7; i++)
    { 
        if(i % 2 == 1) 
        { 
            i = i + 2;//add 2 in i for odd i
        }
        else
        { 
            j++; //add 1 in j for even i
        }

    }

    cout << i <<" "<< j;
}
i=0,j=0
Since, i=0 (even)
j=1 (even so j++)
i=1 (i++ for-loop)
i=3 (odd so add 2)
i=4 (i++ for-loop)
j=1 (unchanged)
i=4 (even)
j=2 (even so j++)
i=5 (i++ for-loop)
i=7 (odd so add 2)
j=2 (unchanged)
i=8 (i++ for-loop)

i=8 (i<7 for-loop exit) &amp; i=2