gpt4 book ai didi

创建了一个函数来反转 C 中 double 数组的内容?但不工作

转载 作者:行者123 更新时间:2023-11-30 20:09:50 24 4
gpt4 key购买 nike

我想创建一个函数来反转 C 中 double 数组的内容,但它不起作用我的函数没有返回反转的数组?请帮忙

//Reverse the content of an array of double

#include<stdio.h>
#define SIZE 5
double *reverse(double *func[],int n);
int main()
{
int i;
double *arr[SIZE];
printf("Please enter 5 numbers\n");
for(i=0;i<SIZE;i++) {

scanf("%lf",arr[i]); // takes the the content of array
}

double arr = reverse(&arr,SIZE); // takes the return value from the function

for(i=0;i<SIZE;i++) {

printf("%.2lf\n",arr[i]);
}
}

double *reverse(double *func[],int n)
{
int i,j;
static double *base[SIZE];
for(i=4,j=0;i>=0,j<n;i--,j++) {

base[j] = func[i]; // reverses the content of array

}

return *base;

}

我猜我的函数有问题,但我找不到它

最佳答案

您的代码存在许多问题。最重要的是:

double *arr[SIZE]; 

不是一个 double 组(它是一个指向 double 的指针数组)。这种误解似乎贯穿了整个程序并导致了其他几个错误。

例如这个:

scanf("%lf",arr[i]);

这里arr[i]是一个未初始化的指针,因此扫描它是未定义的行为。

此外,您的函数调用也会遇到数组错误。

更正确的代码版本可能是:

#include<stdio.h>
#define SIZE 5
void reverse(double* d, int n);

int main()
{
int i;
double arr[SIZE]; // Array of double

printf("Please enter %d numbers\n", SIZE);
for(i=0;i<SIZE;i++)
{
scanf("%lf", &arr[i]); // TODO: Check scanf return value....
// ^ Notice the & (i.e. address-of)
}

reverse(arr, SIZE); // Just pass arr as it will decay into a double pointer

for(i=0;i<SIZE;i++)
{
printf("%.2lf\n",arr[i]);
}
return 0;
}

void reverse(double* d, int n) // Just pass a pointer to first double in the array
{
int i, j=0;
double temp;
for(i=n-1; i>j; i--,j++) // Stop when you reach the middle of the array
{
// Swap using a temp variable
temp = d[j];
d[j] = d[i];
d[i] = temp;
}
}

关于创建了一个函数来反转 C 中 double 数组的内容?但不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com