#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));
}