首页 > 解决方案 > 我的 For-Loop 不工作,但没有引发错误消息 - 它可能是什么?

问题描述

大家好,

我正在创建一个素数检查器作为项目的一部分——我使用一个 For-Loop 来迭代每个数字,另一个来迭代它下面的每个数字,以确定它是否是素数。但是,这两个循环都不起作用。我已经将它与我创建的其他工作 For-Loops 以及与朋友一起检查过,但都没有帮助(对不起朋友)。给予的任何帮助将不胜感激,我将永远高度赞扬你:)

正如刚才所说,我已经检查了其他作品和我的朋友。我也尝试过分别在循环中运行代码,并且代码确实有效。

#include <stdio.h>

//int FinalPrimeArray[sizeof(Primes)];
//int FinalNotPrimesArray[sizeof(NotPrimes)];

int main()
{
    //int Pos = 0;
    int Pos2 = 0;
    int i = 3;
    int k;
    int divider = 2;
    int productint;
    float productintasfloat;
    float productfloat;

    int Primes[100];
    //int NotPrimes[100];

    //Test Block (start)
    float i2 = i;
    float divider2 = divider;
    productfloat = i2 / divider2;
    printf("float type is: %f \n", productfloat);
    productint = i / divider;
    productintasfloat = productint;
    printf("integer type is: %d \n", productint);
    if(productintasfloat == productfloat)
    {
        printf("yes");
    }
    //Test Block (end)

    printf("Calculating all prime numbers in 3-100");
    for(i = 3; i == 100; i++)
    {
        printf("1");
        k = i - 1;
        for(divider = 2; divider == k; divider++)
        {
            printf("2");
            float i2 = i;
            float divider2 = divider;
            productfloat = i2 / divider2;
            printf("float type is: %f \n", productfloat);
            productint = i / divider;
            productintasfloat = productint;
            printf("integer type is: %d \n", productint);
            if(productintasfloat == productfloat)
            {
                Primes[Pos2] = i;
                Pos2++;
            }
        }
    }

    return 0;
}

我希望它迭代 97 次(对于第一个循环),每个主迭代依次迭代 'i - 1' 次。现在肯定已经很清楚了……事实并非如此。运行时,我没有收到任何错误消息,它会打印文本块中的两行代码和“3-100”消息。然后什么都没有,没有错误消息或进一步输出。但是,代码确实会终止(停止符号,变灰 - 通常在代码运行时着色和可点击)

任何帮助将不胜感激,如果没有人可以提供帮助......好吧,我想我将不得不找到另一种解决方法。虽然我希望任何修复都保持接近我的预期方法(我不是想成为一个选择乞丐),但任何修复都将不胜感激:)

-> 崭露头角的开发者

如果我错过了任何有用的信息并且您想提供帮助 - 不要害怕问。

标签: cfor-loop

解决方案


我认为您混淆了 for 循环的工作方式

只要条件为真,for 循环就会一直运行,直到它变为假。您认为,只要条件为假,for 循环就会运行,直到它变为真。

所以for(i = 3; i == 100; i++)应该是for (i = 3; i < 100; i++)

这现在说i在小于 100 时继续增加。你之前的循环说i在 100 时增加。它永远不会


推荐阅读