为什么这个程序没有输出?
Why is this program giving no output?
我有一个程序由于其中的 for 循环而无法运行。我在这里粘贴了一段有效的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numLoop = 19;
int counter;
int maxloops = 25;
int takenNum1 = 9, takenNum2 = 14, takenNum3 = 17, takenNum4 = 21, takenNum5 = 24;
for (counter=1; counter==maxloops; counter++)
{
printf("%d \n", counter);
if (counter == numLoop)
{
break;
}
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
counter++;
continue;
}
}
return 0;
}
预期输出为:1 2 3 4 5 6 7 8 10 11 12 13 15 16 18 19
未打印任何内容。
for
循环条件出现错误。你想写 counter != maxloops
而不是 counter==maxloops
.
否则不满足循环条件,根本不执行循环体
也就是说,根据您的要求,
你需要移动检查块
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
counter++;
continue;
}
before printf()
语句以避免 unconditional 打印。
for
循环条件应该真的像
for (counter=1; counter < numloop; counter++)
^^^^^^^^^^
因为您希望输出限制为 19
。
您可能需要验证逻辑。
如果输出需要最多 19 次迭代。此外,在打印计数器之前应检查 inner-if 条件。
示例伪代码如下。
for (counter=1; counter<=numLoop; counter++)
{
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
continue;
}
printf("%d \n", counter);
}
我想利用这里的教学时间。这似乎是误解 for
语句中的子句的简单问题。 for
语句只是编写 while
循环的快捷方式,内置了初始化和 "after" 代码。for
语句在其括号列表中包含三个子句 - (init ; while ; after)
。因此,让我们使用 as 和示例 for
语句,它被写为
for(i = 0 ; i < 10 ; i++)
{
do_something();
}
上面的 for
循环可以使用 while
循环重写为
i = 0;
while(i < 10)
{
do_something();
i++;
}
如您所见,for
更紧凑。
伙计,你的代码看起来一团糟。理解循环的概念。在 for 循环中仔细听我说。
你一直保持逻辑错误的条件。
循环将检查条件。你写的计数器应该等于 maxloop 这在你的代码中永远不会满足,因为当计数器达到值 19 时代码将退出(当计数器达到 19 时给出中断)。希望能解决第一部分。
其次请注意,循环中断应该发生 post 显示值。为了清楚地理解,我给出了下面的代码。希望这对您有所帮助。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numLoop = 19;
int counter;
int maxloops = 25;
int takenNum1 = 9, takenNum2 = 14, takenNum3 = 17, takenNum4 = 21, takenNum5 = 24;
for (counter = 1; counter <= maxloops; counter++)
{
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
continue;
}
printf("%d \n", counter);
if (counter == numLoop)
break;
}
getchar();
return 0;
}
我有一个程序由于其中的 for 循环而无法运行。我在这里粘贴了一段有效的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numLoop = 19;
int counter;
int maxloops = 25;
int takenNum1 = 9, takenNum2 = 14, takenNum3 = 17, takenNum4 = 21, takenNum5 = 24;
for (counter=1; counter==maxloops; counter++)
{
printf("%d \n", counter);
if (counter == numLoop)
{
break;
}
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
counter++;
continue;
}
}
return 0;
}
预期输出为:1 2 3 4 5 6 7 8 10 11 12 13 15 16 18 19
未打印任何内容。
for
循环条件出现错误。你想写 counter != maxloops
而不是 counter==maxloops
.
否则不满足循环条件,根本不执行循环体
也就是说,根据您的要求,
你需要移动检查块
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5) { counter++; continue; }
before
printf()
语句以避免 unconditional 打印。for
循环条件应该真的像for (counter=1; counter < numloop; counter++) ^^^^^^^^^^
因为您希望输出限制为
19
。
您可能需要验证逻辑。 如果输出需要最多 19 次迭代。此外,在打印计数器之前应检查 inner-if 条件。
示例伪代码如下。
for (counter=1; counter<=numLoop; counter++)
{
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
continue;
}
printf("%d \n", counter);
}
我想利用这里的教学时间。这似乎是误解 for
语句中的子句的简单问题。 for
语句只是编写 while
循环的快捷方式,内置了初始化和 "after" 代码。for
语句在其括号列表中包含三个子句 - (init ; while ; after)
。因此,让我们使用 as 和示例 for
语句,它被写为
for(i = 0 ; i < 10 ; i++)
{
do_something();
}
上面的 for
循环可以使用 while
循环重写为
i = 0;
while(i < 10)
{
do_something();
i++;
}
如您所见,for
更紧凑。
伙计,你的代码看起来一团糟。理解循环的概念。在 for 循环中仔细听我说。
你一直保持逻辑错误的条件。 循环将检查条件。你写的计数器应该等于 maxloop 这在你的代码中永远不会满足,因为当计数器达到值 19 时代码将退出(当计数器达到 19 时给出中断)。希望能解决第一部分。
其次请注意,循环中断应该发生 post 显示值。为了清楚地理解,我给出了下面的代码。希望这对您有所帮助。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numLoop = 19;
int counter;
int maxloops = 25;
int takenNum1 = 9, takenNum2 = 14, takenNum3 = 17, takenNum4 = 21, takenNum5 = 24;
for (counter = 1; counter <= maxloops; counter++)
{
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
continue;
}
printf("%d \n", counter);
if (counter == numLoop)
break;
}
getchar();
return 0;
}