fuaowei 发表于 2023-3-5 13:04:15

数组运用

想不明白我这段代码问题出在哪里,运行出来竟然结果都不对,人麻了。已知发现输入浮点数后,存到数组中竟然都变成0了。怎么会这样{:10_266:}

#include<stdio.h>

int main()
{
        int i,j;
        float max=0.0,min=0.0,result;
        float a;

        printf("请输入三个数据:\n");
    for(i=0;i<3;i++)
    {
            scanf("%f",&a);
        }
        for(i=0;i<3;i++)
        {
                max=max<a?a:max;
                min=min>a?a:min;
        }
        result=(max-min)/min*100;
        printf("最大不平衡率:%.2f\n",result);
       
        return 0;
}

dolly_yos2 发表于 2023-3-5 13:04:16

别的问题没看出来, min 和 max 的初值是不是改一改比较好?比如如果所有输入都是正的,那 min 就一直是0,最后就会除零
把 min 和 max 都初始化为第一个数应该会比较好(也要考虑会不会除零)

wuliangtdi 发表于 2023-3-5 15:08:49

本帖最后由 wuliangtdi 于 2023-3-5 17:15 编辑

#include<stdio.h>
#include<float.h>

int main()
{
    int i, j;
    //FLT_MIN FLT_MAX分别为单浮点最小值和单浮点最大值
    float max = FLT_MIN, min = FLT_MAX, result;
    float a;

    printf("请输入三个数据:\n");
    for (i = 0; i < 3; i++)
    {
      scanf_s("%f", &a);
    }
    //for (int k = 0; k < 3; k++)
    //{
    //    printf("%f\n", a);
    //}

    for (i = 0; i < 3; i++)
    {
      max = max < a ? a : max;
      min = min > a ? a : min;
    }
    result = (max - min) / min * 100;
    printf("最大不平衡率:%.2f\n", result);

    return 0;
}
https://i.ibb.co/G9B2tnL/64043fd125a3b.png
没啥问题啊

fuaowei 发表于 2023-3-5 19:44:54

dolly_yos2 发表于 2023-3-5 14:16
别的问题没看出来, min 和 max 的初值是不是改一改比较好?比如如果所有输入都是正的,那 min 就一直是0, ...

确实诶,我先去试试

fuaowei 发表于 2023-3-5 19:49:25

dolly_yos2 发表于 2023-3-5 13:04
别的问题没看出来, min 和 max 的初值是不是改一改比较好?比如如果所有输入都是正的,那 min 就一直是0, ...

我服了,光想公式去了,除法基本要求给忘记了。谢谢大佬提醒,不然我头发都快想没了
页: [1]
查看完整版本: 数组运用