Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C For循环未执行_C_For Loop - Fatal编程技术网

C For循环未执行

C For循环未执行,c,for-loop,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 |

这个公式根本无法执行。我尝试使用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
应该是

for (i = 0; i < 35; i++)
循环体仅在条件为真时执行。

它应该为真

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

由于0<35,所以在其条件下永远不会为真,因此循环体永远不会执行。

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

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

if (i != 6 || i != 12 || i != 18 || i != 24 || i != 30)
您认为上述条件何时为假?我们需要看两个案例:

我等于6。所以,我!=6为假,但条件i的每一个其他部分!=12等等是真的。这是因为6只等于6,没有其他数字。因此,总体情况是正确的。 我不等于6。现在,我6是正确的,因此整个条件是正确的。 所以,上面的if条件总是正确的

另外,想想如果循环到一个大的数字,比如215,会发生什么。您是否希望出现以下情况:

if (i == 6 || i == 12 || ... || i == 210)
当然,必须有更好的方法来做你想做的事。我想你们想要的是将基数乘以2,当我被6整除时,重置高度;否则,将高度乘以2。代码结构变为:

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

要测试6的可整除性,请记住,对于数字n和m,n%m给出n除以m的余数。

我认为,如果重新设计代码和条件,效果会更好。
能否将for循环更改为for i=1;i第一个循环将永远不会执行。第一次检查i>35,在您的情况下是另一个错误-不要在循环开始时假设base=0,height=0。看看你的其他问题,你似乎不明白某些构造是如何工作的,你也不知道如何使用调试器来单步执行代码、检查变量值并向你展示它是如何跳过循环的。
/* not legal C */
if (i is divisible by 6) {
} else {
}