c - break in side for loop - 在 break 语句之后不在 for 循环之外打印任何内容

标签 c for-loop conditional-statements break

为什么下面的 for 循环不执行超过第一次迭代 谁能帮我解决这个问题。 提前致谢。

输出:

Enter the Range of Numbers

Enter the First Number: 2

Enter the Last Number: 30

The non-prime numbers between 2 and 30 are:

.start for loop...............i=2

.p....=3

end of for loop: i....=2

.start for loop...............i=3

在此之后,FOR 循环不再执行。为什么?

#include <stdio.h>

int main(void)
{

    int start, end, i, remain, k, p, count = 0;
    printf("\nEnter the Range of Numbers\n\n");
    printf("Enter the First Number: ");
    scanf("%d", &start);
    printf("Enter the Last Number: ");
    scanf("%d", &end);

    int flag;
    printf("The non-prime numbers between %d and %d are:\n", start, end);
    for (i = start; i <= end; i++)
    {
        printf("\n.start for loop...............i=%d\n", i);
        // p = 2;
        for (p = 2; p<i;)
        {
            remain = i%p;
            if (remain == 0)
                break;
            //p++;
        }
        p++;
        printf("\n.p....=%d \n", p);

        if (i == p)
            //  if(remain==0)
        {
            printf("%d ", i);
            count++;
        }
        printf("\n end of for loop: i....=%d\n", i);
    }
    printf("\n............\n");
}

最佳答案

你的循环代码

    for (p = 2; p<i;)
    {
        remain = i%p;
        if (remain == 0)
            break;
        //p++;
    }

不完整。

pfor 语句中不可更改,在正文中的 p++ 被注释。因此,您可能会遇到无限循环。

考虑以下更改:

    remain = 1;
    for (p = 2; p<i && remain; p++)
    {
        remain = i % p;
    }

甚至(没有remain)

for (p = 2; p < i && i%p; p++); 

关于c - break in side for loop - 在 break 语句之后不在 for 循环之外打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968093/

相关文章:

javascript - For 循环中的 getElementById

ios - 在 Swift 3 或 4 中检查 if 条件矩阵

c - 在C中使用信号和警报作为超时

c - 如何在 epoll 上使用具有级别触发行为的 eventfd?

python 列表突变(for in loop vs range(len))

java - 将 List<ArrayList> 转换为 String[]

python - 如何在Python中从字符串中就地删除重复项?

python-3.x - 使用 Pandas 过滤具有多个值的单元格中的字符串

c - .o 与 C 中的 .out

c++ - Address Sanitizer 无法使用选项 -O 检测内存泄漏