【问题标题】:I am not understanding how this for loop is working c++我不明白这个 for 循环是如何工作的 C++
【发布时间】:2017-02-15 22:34:14
【问题描述】:
#include <iostream>

using namespace std;

int main()
{
   int x = 0;
   for int (i=0; i<100; i++)
   if (i%9 == 0) x = i;
   else x = -1;
   cout << x;
   return 0;
}

这段代码的 sn-p 返回值 99。

当我逐行阅读时,我是这样理解的。

  1. 声明一个变量x,赋值为0。
  2. 对于 i = 0,i 小于 100,将 i 递增 1。
  3. 如果 i/9 的余数等于 0,则将 i 的值赋给 x。
  4. 如果没有设置 x 等于 -1
  5. 打印出 x

在 for 循环的第一步中,i 被赋值为 0。0 除以 9 等于 0,它满足 if 语句的条件,那么为什么它不会打印出 x 等于 0 而不是 99 ?

【问题讨论】:

  • 您的描述似乎与您发布的代码不符。你能修复代码吗?
  • 为/否则!!你让我开心:) !!!
  • @GregHewgill 这是我们在课堂上一起做的期中准备考试,我的教授告诉我们答案是 99,我一直无法弄清楚为什么,这是给我们的代码在模拟考试中。
  • 您确定在这里发帖时没有丢一两行代码吗?这段代码不会编译,更不用说产生答案了。
  • 我讨厌这样的问题。我的第一反应是“这只是无效的代码!”,但随后我想“等等,这是我不知道的一些奇怪的 C++14 还是 GNU 扩展”。

标签: c++ loops iteration


【解决方案1】:

逐行

1) 声明一个变量x;将其赋值为 0。

#include <iostream>
int main()
{
    int x=0;
}

2) 对于i = 0i 小于 100,将 i 递增 1。

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++) {};
}

3) 如果i/9的余数等于0,则将i的值赋给x

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }
    };
}

4) 如果没有设置,x 应该等于 -1:

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }

        else
        {
            x = -1;
        }
    };
}

5) 打印出x

 #include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }

        else
        {
            x = -1;
        }
    };
    std::cout << x << std::endl;
}

DEMO 最后一个。

更多C++趣味活动参考

worldbestlearn

WikiBooks

course

【讨论】:

  • 我想在我反复阅读之后我现在明白了。我可以达到的极限是 100,所以它在 100 次迭代限制内尽可能多地迭代,最后一个能被 9 整除的数字是 99。分配给 x
  • @user3358064 formatted ,以获得更好的可读性。还有其他问题吗 ? :-)
【解决方案2】:

输出是正确的。每次循环时,x 都会获得i 的值或-1 的值。最后一次循环时,i == 99i % 9 确实为 0,所以 x 被赋值为 99。然后i得到100的值,循环退出,程序的其余部分打印x的当前值,即99

注意if/elsefor 循环的主体。循环不会仅仅因为i%9if 中为0 而退出。

【讨论】:

    【解决方案3】:

    只有 for 循环之后的单个语句 位于 for 循环内。请注意,if ... else ... 是一个语句(包含其他语句)。

    完全相同的代码最好写成:

    int main()
    {
       int x = 0;
       for (int i=0; i<100; i++)
       {
          if (i%9 == 0)
             x = i;
          else
             x = -1;
       }
       cout << x;
       return 0;
    }
    

    现在应该很容易看出为什么在循环结束之前什么都没有打印出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多