大佬们,帮帮我,代码里面的这个d的值一直是0,无法改变,请问有什么办法吗

#include
#include

int main()
{
double a[100];
memset(a, '0', sizeof(a));
double b = a[0];
double d ;
d = 1;
int i, j;
double* p = a;

for (i = 0; i < 100; i++)
{
    scanf_s("%lf", &a[i]);
    if (getchar() == '\n')
        break;
}
for (i = 0; i < 100; i++)
{
    if (b < a[i])
    {
        b = a[i];
    }
    else if (d > a[i])
    {
        d = a[i];
    }
}



d = b - d;
printf("%lf", abs(d));

}

不可能啊,你说的d一直是0,你测试的数据什么?
你输入3回车, d是多少?

可能是因为abs对整形使用,而你d是double,
不过应该会编译错误才对。
我改了一下正常。
另外如果你的b是最大值那应该b=0,按你的代码b=‘0’=48,或memset(a,0,dizeof(a));
没看懂你想输出什么,能把题发上来吗
如果问题解决请采纳

#include <algorithm>
#include <cstdio>
#include <iostream>
#include<cstring> 
#include<cmath>
using namespace std;
int main() {
    double a[100];
    memset(a,' 0', sizeof(a));
    double b = 0;
    double d ;
    d = 1;
    int i, j;
    double* p = a;

    for (i = 0; i < 100; i++)
    {
            scanf("%lf", &a[i]);
        if (getchar() == '\n')
            break;
    }
    for (i = 0; i < 100; i++)
    {
        if (b < a[i])
        {
            b = a[i];
        }
        else if (d > a[i])
        {
            d = a[i];
        }
    }



    d = b - d;
    printf("%lf", fabs(d));
}