C For循环未执行
这个公式根本无法执行。我尝试使用printf进行调试,它在代码末尾为I打印了0C 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 |
#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 {
}