为什么这个程序没有输出?

时间:2016-12-30 14:28:45

标签: c if-statement for-loop break continue

我有一个程序由于其中的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

什么都没有打印出来。

4 个答案:

答案 0 :(得分:6)

for循环条件出现错误。您想写counter != maxloops而不是counter==maxloops

否则,不满足循环条件,并且循环体完全没有执行。

那说,根据你的要求,

  1. 您需要移动检查区

    if (counter == takenNum1 || counter == takenNum2 || counter == takenNum3 || counter == takenNum4 || counter == takenNum5)
    {
        counter++;
        continue;
    }
    

    之前 printf()语句,以避免无条件打印。

  2. 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;
}