我想创建一个简单的程序,找到所有素数< ñ。我想存储我在数组中找到的数字。问题是我不知道如何将数组传递给函数并将结果保存在其中。现在它没有将数字保存在数组中。这是我的代码:
编辑:预期输出是使用我制作的打印功能打印值。程序离开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;
}
答案 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]);
}