【问题标题】:For Loop not executingFor循环未执行
【发布时间】:2010-07-10 01:55:28
【问题描述】:

公式根本没有执行。我尝试使用printf 进行调试,它在代码末尾为i 打印出0

#include <stdio.h>

int main()
{
 int i, base, height;
 printf("Lumber  Cross-Sectional   Moment of Section\n");
 printf("Size  Area    Inertia  Modulus\n");
 for (i = 0; i > 35; i++)
 {
  if (i == 6 || i == 12 || i == 18|| i == 24 || i == 30)
  {
   base = base * 2;
   height = 2;
  }
  if (i != 6 || i != 12 || i != 18 || i != 24 || i != 30)
  {
   height = height * 2;
  }
  printf("%d x %d %d  %d   %d \n", base, height, base * height, base * 2 + height); 

 }//for  
 return (0);
}//main

【问题讨论】:

  • 另一个错误——不要在循环开始时假设 base=0 和 height=0。它们可以是任何东西。
  • 看你的其他问题,你似乎不明白某些结构是如何工作的,你也不知道如何使用调试器(用于单步执行代码,检查变量值并显示它如何跳过循环)。

标签: c for-loop


【解决方案1】:

应该是

for (i = 0; i < 35; i++)

循环体只有在条件为真时才会执行。

【讨论】:

    【解决方案2】:

    应该是

    for (i = 0; i < 35; i++)
    

    正如蜥蜴比尔所说。

    for (i = 0; i > 35; i++)
    

    从 0

    【讨论】:

      【解决方案3】:

      您需要考虑您的条件意味着什么。其他人提到了循环不执行的原因。让我们看看另一种情况:

      if (i != 6 || i != 12 || i != 18 || i != 24 || i != 30)
      

      你认为上述条件什么时候会是假的?我们需要看两种情况:

      • i 等于 6。所以,i != 6 为假,但条件的所有其他部分(i != 12 等)为真。这是因为 6 只等于 6,没有其他数字。所以整体条件是真的。
      • i 不等于 6。现在,i != 6 为真,因此整个条件为真。

      所以,您上面的if 条件始终为真。

      另外,想想如果你循环到一个很大的数字会发生什么,比如 215。你是否想要这样的条件:

      if (i == 6 || i == 12 || ... || i == 210)
      

      当然,必须有更好的方法来做你想做的事。我想你想要的是将base 乘以2,并在i 可被6 整除时重置height;否则将height乘以2。代码结构变为:

      /* not legal C */
      if (i is divisible by 6) {
      } else {
      }
      

      要测试被 6 整除,请记住对于数字 nmn % m 将得到 n 除以 m 的余数。

      【讨论】:

        【解决方案4】:

        正如上面两位小伙伴所说 在条件为真之前,for 循环不会执行。在这里问它之前,您应该自己调试它。 :)

        【讨论】:

          【解决方案5】:

          我认为,如果你重塑代码和条件,它会好很多。 你能把for循环改成for (i=1 ; i&lt;36 ; i++)吗?通过这种方式,您可以简化循环内的 if 条件,如您所见,您正在检查代码中它是否是 6 的倍数。 你可以按照这些思路来思考。

          更多指点:

          1. 将所有变量初始化为默认值。
          2. 以更易读的方式打印输出。从中删除 x。还可以使用 \t 等间距设置值。

          【讨论】:

            【解决方案6】:

            第一个循环永远不会执行。第一次检查 (i>35),在你的情况下 i

            【讨论】:

              猜你喜欢
              • 2014-10-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-23
              • 1970-01-01
              • 2019-05-28
              • 2012-11-06
              相关资源
              最近更新 更多