C++ 用步骤分析代码
我知道代码的输出是82,但是有人能告诉我 请在每一步后更换i和j 以下是代码的链接:C++ 用步骤分析代码,c++,C++,我知道代码的输出是82,但是有人能告诉我 请在每一步后更换i和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
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;
}
使用名称空间std;
int main()
{
int i;int j=0;
对于(i=0;i<7;i++)
{
如果(i%2==1)
{
i=i+2;j++;
}
其他的
{
j=j+2;
}
j--;
}
可能是
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
inti;intj=0;//i==?j==0
----------------------------------------------
对于(i=0;//i==0 j==0
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==0 j==2
j--;//i==0 j==1
i++//i==1 j==1
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==3 j==2
j--;//i==3 j==1
i++//i==4j==1
----------------------------------------------
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==4 j==3
j--;//i==4 j==2
i++//i==5j==2
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==7 j==3
j--;//i==7 j==2
i++//i==8 j==2
----------------------------------------------
i<7;//错误
它将是
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
inti;intj=0;//i==?j==0
----------------------------------------------
对于(i=0;//i==0 j==0
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==0 j==2
j--;//i==0 j==1
i++//i==1 j==1
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==3 j==2
j--;//i==3 j==1
i++//i==4j==1
----------------------------------------------
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==4 j==3
j--;//i==4 j==2
i++//i==5j==2
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==7 j==3
j--;//i==7 j==2
i++//i==8 j==2
----------------------------------------------
i<7;//错误
简化了你的代码,从if true
中删除j++
,在if false
中将j=j+2
更改为j++
,这样if else
之后的j--
将被删除。而且理解代码也变得更容易
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=8(i通过从if-true
中删除j++
,将j=j+2
更改为if-false
中的j++
来简化您的代码,以便删除if-else
之后的j--
,并且理解代码变得更容易
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=8(我在现场看到调试器了吗?现在是寻找魔法工具的好时机:-)如果你只是插入一份的副本,你就不能在现场看到调试器了吗?现在是寻找魔法工具的好时机:-)如果你只是插入一份的副本,可能有人觉得这不是问题的答案。因为你修改了原始代码,这显然不是对原始代码的逐级解释。你得到了相同的结果,但这有点无关紧要。@4386427否决票是对我之前的答案的,我在那里跟踪了原始代码e、 但由于该代码看起来效率低下(有不必要的增量和减量),我只是修改了它。很高兴知道它有帮助。也许有人觉得这不是问题的答案。因为你修改了原始代码,这显然不是对原始代码的逐级解释。你得到了相同的结果,但这有点无关紧要。@4386427否决票是对我先前的答案的,我在那里跟踪了原始代码代码。但由于代码看起来效率低下(有不必要的增量和减量),我只是修改了它。很高兴知道它有帮助。非常感谢你的帮助,我很快理解了它,你展示了每一步,谢谢:谢谢:谢谢:谢谢你的帮助,我很快理解了它,你展示了每一步,谢谢:D
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)