编译我的简单C代码

时间:2017-03-22 17:19:32

标签: c

每当我尝试编译以下代码时,我都可以输入我要求的初始值但是没有任何反应。此外,没有构建错误被拾取,所以我不知道为什么会发生这种情况。请提前帮助并表示感谢。

#include <stdio.h>
#include <stdbool.h>
int n;
int allDaPrimes[1000];
int counter = 0;
bool isPrime(int number);
int i;

int main()
{
    printf("Please enter a numeric value now: ");
    scanf("%d", &n);
    for (i = 2; i <n; i++){
        isPrime(i);
        if(isPrime(i)) {
            allDaPrimes[counter] = i;
            counter++;
        }
        }


    for(i= 0; i==counter; i++){
        printf("%d", allDaPrimes[i]);
    }
    return 0;

   }

bool isPrime(int number) {
    for (i= 2; i <= number; i++){
        if(number % i == 0 && number != i){
            return false;
        }

    }
    return true;
}

2 个答案:

答案 0 :(得分:3)

这是代码中的逻辑错误,这意味着您的代码完全按照您的说法执行,但这并不是您脑子里的想法。

问题在于这句话

for(i= 0; i==counter; i++){
    printf("%d", allDaPrimes[i]);
}

它从i = 0开始然后在i ==计数器时运行,这可能不是你想到的。你可能意味着:i<counter

答案 1 :(得分:1)

所有变量都是全局声明的,而不是在使用它们的函数中本地声明。这意味着您在不同的功能之间发生冲突。

i为例。在main的循环中,您首先将其设置为2.但是isPrime()将其更改为n+1,因为这是完成循环之后的最后一个值。但是你调用了两次,因此i最终成为n+2,所以主循环只运行一次。如果你最终得到数组中的任何值,那么n+2如果n+1是素数,那就是//Create another PHP file / class that sends an email and control it from the php code. // the message $msg = "First line of text\nSecond line of text"; // send email mail("someone@example.com","My subject",$msg);