我有一个程序由于其中的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
什么都没有打印出来。
答案 0 :(得分:6)
for
循环条件出现错误。您想写counter != maxloops
而不是counter==maxloops
。
否则,不满足循环条件,并且循环体完全没有执行。
那说,根据你的要求,
您需要移动检查区
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
counter++;
continue;
}
之前 printf()
语句,以避免无条件打印。
for
循环条件应该看起来像
for (counter=1; counter < numloop; counter++)
^^^^^^^^^^
因为您希望输出限制为19
。
答案 1 :(得分:1)
您可能需要验证逻辑。 如果输出需要最多19次迭代。此外,应在打印计数器之前检查内部if条件。
示例伪代码如下。
for (counter=1; counter<=numLoop; counter++)
{
if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
{
continue;
}
printf("%d \n", counter);
}
答案 2 :(得分:1)
我想利用这里可教的时刻。这似乎是一个简单的问题,误解了for
声明中的条款。 for
语句只是编写while
循环的快捷方式,内置初始化和“后”代码。for
语句在其括号列表中有三个子句 - {{ 1}}。因此,让我们使用(init ; while ; after)
语句作为示例,该语句写为
for
可以使用for(i = 0 ; i < 10 ; i++)
{
do_something();
}
循环
for
循环
while
如您所见,i = 0;
while(i < 10)
{
do_something();
i++;
}
更加紧凑。
答案 3 :(得分:1)
Buddy你的代码看起来都搞砸了。理解循环的概念。 for for循环听我说。
你保持这个条件在逻辑上是错误的。 循环将检查条件。并且你已经写了,因为计数器应该等于maxloop,它将永远不会满足你的代码,因为代码将退出计数器达到值19(当计数器达到19时给出中断)。希望能解决第一部分。其次请注意,在显示值后会发生循环中断。为了清楚了解,我已经给出了以下代码。希望这会有所帮助。
#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;
}