gpt4 book ai didi

c - 通过循环打印一维数组未按预期工作

转载 作者:行者123 更新时间:2023-11-30 15:15:13 25 4
gpt4 key购买 nike

目前,第一个函数 info() 工作正常并返回整个数组。这似乎传递给 kurtosis() 函数也很好,因为我已经测试过每个元素是否手动在函数中打印。然而,当尝试通过循环打印每个元素时,它似乎只打印第一次迭代中的值;对于此后的迭代,它会打印 0。奇怪的是,当用常数替换 i 时,这种情况仍然发生。

#include <stdio.h>

double * info(){//function for obtaining up to 10 numbers
int i;
int x=0;
double numbers[10];
for (i = 1; i < 11; i++){
printf("\nPlease enter value %d:", i);
scanf("%lf", &numbers[i]);
x++;//counting number of entries
if(numbers[i] <0){//stops accepting numbers if user enters negative number
x--;
numbers[i] = -1;
break;
}
}
printf("%d numbers entered.\n", x);
return numbers;
}
double kurtosis(double * numbers){
int i, x;
double mean, numerator, denominator, sum;

for (i = 1; i < 11; i = i + 1){ //irrelevant loop; will be used later on
if (numbers[i] == -1){
x = i-1;
break;
}
}

for (i = 1; i < 10; i++){
printf("%lf\n", numbers[i]);//printing each value in the array
}
}

int main(void){
double * numbers = info();
double kurtno;
kurtno = kurtosis(numbers);//passing the array to the kurtosis function
}

最佳答案

您的代码存在一些问题。

<小时/>
double numbers[10];

这是函数 info() 的本地数组。函数返回后访问它会调用未定义的行为。

<小时/>

函数kurtosis()return输入 double ,但 kurtosis() 没有返回任何内容.

<小时/>

如果您尝试访问number[]来自 info() 的数组在函数 kurtosis() 中,那么也会出现错误。

数组索引始终从 0 开始。所以number[10]索引从 0 开始至9 .

循环for (i = 1; i < 11; i = i + 1)将访问number[10]这是超出范围的。

更改为

for (i = 1; i < 10; i = i + 1)
<小时/>

让它发挥作用

使用malloc() 。使用malloc()分配的内存保持在函数调用之间的范围内。

double* numbers = malloc(10*sizeof(double));

关于c - 通过循环打印一维数组未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697945/

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