gpt4 book ai didi

c - 动态数组中的最大值

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

我的程序应该计算在 while 循环中变化的变量的许多值,将这些值存储在数组中,然后搜索最大值。

我面临的问题是,这些值没有被存储,当循环递增时,新计算的值会压垮前一个值,然后我如何比较它们?

我只知道 scanf 来存储,但在这种情况下它不起作用,我应该使用另一个指针来遍历数组值吗???

////简单程序解释问题!!!

#include <stdio.h>
#include <stdlib.h>
#include<math.h>

float *tab;
int main()
{
float a;
a=-1;
int i;
float tab[maxi]=0;
int taille=10;

for (i=0;i<taille; i++)
{
while (a < 30)
{
float s= -a*a+a+1;
tab=(float(*)) malloc(taille*sizeof (float));
tab[i]=s;

if(tab[i]>= tab[maxi])
{
maxi=tab[i];
printf("\n maxi=%f",maxi);
break;
}
a=a+1;
}

}

return 0;
}

提前致谢!

最佳答案

这不起作用,因为您在循环中一次又一次地分配数组,因此每次分配都会覆盖(替换)先前的分配。语句“float tab[maxi]= 0;”写入未分配的内存(您遇到了段错误或类似情况?)

你想要做什么的逻辑不清楚,但以下至少是正确的C:

float *tab;
int main()
{
float a= -1.0;
int i;
int taille=10;
int maxi= taille-1;

tab=(float *) malloc(taille*sizeof(float));
tab[maxi]= 0;

for (i=0;i<taille; i++)
{
while (a < 30)
{
float s= -a*a+a+1;
tab[i]=s;

if(tab[i]>= tab[maxi])
{
maxi=tab[i];
printf("\n maxi=%f",maxi);
break;
}
a=a+1;
}
}
return 0;
}

P.s.:循环 while (a<30) 确实每次都会覆盖 tab[i]。我认为这就是您想要的,否则可能是您正在寻找的错误(其中之一)。

关于c - 动态数组中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958109/

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