For Loop未执行

时间:2010-07-10 01:55:29

标签: c for-loop

公式根本没有执行。我尝试使用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

6 个答案:

答案 0 :(得分:16)

应该是

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

循环体仅在条件为真时执行。

答案 1 :(得分:4)

应该是

for (i = 0; i < 35; i++)
比尔蜥蜴说的话。

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

在其条件下永远不是真的,因为0&lt; 35因此循环体永远不会被执行。

答案 2 :(得分:3)

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

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

您认为上述情况何时会失败?我们需要看两个案例:

  • i等于6.因此,i != 6为false,但条件的其他部分(i != 12等)为真。这是因为6只等于6,而没有其他数字。所以整体情况确实如此。
  • i不等于6.现在,i != 6为真,因此整个条件都是正确的。

因此,您上面的if条件始终为真。

另外,想想如果你循环到一个大数字会发生什么,让我们说215.你想要有这样的条件:

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

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

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

要将可分性测试为6,请记住,对于数字nmn % m会为您提供余下的n除以m

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我认为如果你重塑代码和条件,它会好很多。 你能将for循环更改为for (i=1 ; i<36 ; i++)吗?这样你可以简化循环中的if条件,因为你可以看到你正在检查它是否是代码中的6的倍数。 你可以在这些方面思考。

更多指示:

  1. 将所有变量初始化为默认值。
  2. 以更易读的方式打印输出。从中删除x。也可以使用\ t \ t
  3. 平均分隔值

答案 5 :(得分:0)

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