将数组作为参数

时间:2016-02-22 13:55:21

标签: c arrays

我想创建一个简单的程序,找到所有素数< ñ。我想存储我在数组中找到的数字。问题是我不知道如何将数组传递给函数并将结果保存在其中。现在它没有将数字保存在数组中。这是我的代码:

编辑:预期输出是使用我制作的打印功能打印值。程序离开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;
}

3 个答案:

答案 0 :(得分:3)

将数组作为参数传递在程序中正常工作,问题出在其他地方:

afisare替换

printf("%d", prime[index]);

printf("%d\n", prime[i]);

答案 1 :(得分:1)

打印错误。

时:

save()

应该是:

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

小心不要超过for循环中的数组长度。

答案 2 :(得分:0)

您的其余代码是正确的。你在打印时犯了错误。以下是正确的代码。

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