函数求最大值最小值输出问题
#include<stdio.h>double max, min;
void hanshu(double b);
void main()
{
double a = { 96, 95.5, 85, 76, 91, 86, 82, 79, 68, 88 };
hanshu(a);
printf("\n");
}
void hanshu(double b)
{
int i;
double max = b;
double min = b;
double average;
double k = 0;
for (i = 0; i < 10; i++)
{
k = k + b;
max = max>b ? max : b;
min = min < b ? min : b;
}
average = k / 10;
printf("%lf\n%lf\n%lf\n", average, max, min);
}
求数组的平均值、最大值、最小值。最小值min的输出答案一直不正确,请问到底怎么回事, min 的初值赋小了。给min 一个足够大的数比如说
double min = 9.5e100; max = max>b ? max : b;
min = min < b ? min : b;
这两行中,数组b的下标写错了,把 i+1 改为 i 就可以了
若写成 i+1,当i为9的时候,就溢出了,那么就有可能导致max或者min出错 因为你这两句 double max = b; 和 double min = b; 已经保存了数组的第一个元素,循环语句就没有必要从 0 开始了,直接从 1 开始 for (i = 1; i < 10; i++),这样,不仅下面的两个语句看起来简单,还不容易出错,max = max > b[ i ] ? max : b[ i ];min = min < b[ i ] ? min : b[ i ]; sunrise085 发表于 2020-10-15 16:32
这两行中,数组b的下标写错了,把 i+1 改为 i 就可以了
若写成 i+1,当i为9的时候,就溢出了,那么就 ...
不好意思,大师,我回答时没有看到你已经回答了这个意思,撞衫了{:5_94:} xieglt 发表于 2020-10-15 16:28
min 的初值赋小了。给min 一个足够大的数比如说
double min = 9.5e100;
感谢 sunrise085 发表于 2020-10-15 16:32
这两行中,数组b的下标写错了,把 i+1 改为 i 就可以了
若写成 i+1,当i为9的时候,就溢出了,那么就 ...
十分感谢 乐乐学编程 发表于 2020-10-15 19:33
因为你这两句 double max = b; 和 double min = b; 已经保存了数组的第一个元素,循环语句就没有必要 ...
感谢 capitran 发表于 2020-10-22 21:12
感谢
不用客气
页:
[1]