【发布时间】:2022-01-05 22:54:26
【问题描述】:
我对这个问题的总体目标是了解如何使用(例如打印)从外部函数返回的数组。我以质数为例。 我是新人,所以要深入解释......如果有不需要的信息或滥用的术语,我很抱歉:)
我定义了一个函数“findprimes”来查找 1 和 x 之间的每个素数。 该函数成功打印一个素数数组。但是,我不知道它是否返回素数数组。而且,如果是这样,我不知道如何在 main() 中使用所述数组。
这是函数'findprimes':
int* findprimes(int x) {
int i, j, total=0;
int* numbers = (int*)malloc((x + 1) * sizeof(int));
/* initialization */
for (i = 0; i <= x + 1; i++) {
numbers[i] = 1;
}
/* find primes and assign prime=1 */
for (i = 2; i < sqrt(x); i++) {
if (numbers[i] == 1) {
for (j = i * i; j <= x; j = j + 2) {
if (j % i == 0) {
numbers[j] = 0;
}
}
}
}
/* count how many primes */
for (i = 1; i <= x; i++) {
if (numbers[i] == 1) {
total++;
}
}
/* put primes into their own array */
int* primes = (int*)malloc(total * sizeof(int));
for (i = 1,j=0; i <= x; i++) {
if (numbers[i] == 1) {
primes[j] = i;
j++;
}
}
//I want this part to be in main()
printf("The prime numbers between 1 and %d are: ", x);
for (i = 0; i < total; i++) {
printf("%d ", primes[i]);
}
return primes;
}
我想在 main 中打印 'primes' 数组,而不是在函数 'findprimes' 本身中。我该怎么做?
int main() {
int n;
do {
printf("Enter a value for X>2: ");
scanf("%d", &n);
} while (n <= 2);
findprimes(n); //This returns 'primes' array
//I want to print 'primes' array here
}
【问题讨论】:
标签: arrays c return-value variable-length-array