求数组中最大最小值,总是不对

[复制链接]
4591|5
 楼主| tianxiongweitxw 发表于 2022-7-16 21:34 | 显示全部楼层 |阅读模式
求助!!!!!!求一个16个FLOAT数组元素中的最大和最小值,怎么也不对,最小就一直输出0,最大就一直输出941654200000000000000.000000.代码怎么看都没有问题,求助高手解答,谢谢.代码很简单,如下:

//求数组中最大值,向量的长度是a,首地址是这P.
float        max(float p[],u8 a)
{
         u8 i=0;
        float max=0;
    for (i=0;i<a;i++)
    {
        if(p[i]>max)max=p[i];
    }       
                     return max;
        }               
//求数组中最小值,向量的长度是a,首地址是这P.
float        min(float p[],u8 a)
{
          u8 i=0;
          float min=0;
         for(i=0;i<a;i++)
    {
        if(p[i]<min)min=p[i];
    }       
                return min;
        }
//////////

 楼主| tianxiongweitxw 发表于 2022-7-17 08:20 | 显示全部楼层
问题找到,数组越界
一周一天班 发表于 2022-7-17 20:55 | 显示全部楼层
不止。min初始最大或第一个值。
float        min(float p[],u8 a)
{
          u8 i=0;
          float min=p[0];
         for(i=1;i<a;i++)
    {
        if(p[i]<min)min=p[i];
    }      
                return min;
        }
Jack315 发表于 2022-7-17 21:31 | 显示全部楼层
下列语句有 Bug :
float max = 0;
如果数据全部小于 0,则下列语句中 if 后面的赋值语句永远不会被执行。
if (p > max) max = p;
结果为:max = 0 。

同理,如果数据全部大于 0,则下列语句结果为:min = 0 。
float min = 0;
if (p < min) min = p;
声明 max、min 变量时,应将其分别赋值为 float 类型的最小值和最大值。
 楼主| tianxiongweitxw 发表于 2022-7-18 16:34 来自手机 | 显示全部楼层
是的,谢谢回复。
nongshengjiang 发表于 2022-7-18 21:23 来自手机 | 显示全部楼层
唉哪个学校学的?逻辑差了些啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

521

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部