我想做一个简单的程序,找到所有素数编辑:预期输出是使用我创建的打印函数打印值。现在在程序离开nrprime函数之后,它删除了答案。问题是程序将该数组视为局部变量。我怎样才能把它当作全局变量,并真正地将答案存储在其中。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Se citeste un numar intreg de la tastatura, sa se afiseze toate numerele prime mai mici decat n.
// calculating
int nrprime(int numar,int prime[150])
{
    int i, j, ok, index = 0;
    prime[index++] = 2;
    for (i = 3 ; i < numar ; i = i + 2)
    {
        ok = 1;
        for (j = 3 ; j <= sqrt(i) ; j = j + 2)
            if (i % j == 0)
                ok = 0;
        if (ok == 1)
        {
            printf("I:=%d", i);
            prime[index] = i;
            index++;
        }
    }
    return index;
}

// printing
void afisare(int *prime, int index)
{
    int i=0;
    printf("Numerele prime sunt:");
    for (i = 0 ; i <= index ; i++)
        printf("%d", prime[index]);
}


int main(void)
{
    int numar = 0; int prime[150];
    int index;

    printf("Introduceti un numar intreg pozitiv:\n");

    scanf("%d", &numar);
    index = nrprime(numar, prime);

    afisare(prime, index);
    return 0;
}

最佳答案

打印错误。
是:

// printing
void afisare(int *prime, int index)
{
    int i=0;
    printf("Numerele prime sunt:");
    for (i = 0 ; i <= index ; i++)
        printf("%d", prime[index]);
}

应该是:
// printing
void afisare(int *prime, int index)
{
    int i=0;
    printf("Numerele prime sunt:");
    for (i = 0 ; i <= index ; i++)
        printf("%d", prime[i]);
        //                ^^^
}

注意不要超过for循环中的数组长度。

10-07 19:08
查看更多