我想做一个简单的程序,找到所有素数编辑:预期输出是使用我创建的打印函数打印值。现在在程序离开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循环中的数组长度。