|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <string.h>
struct book{
double price;
char name[31];
};
int main()
{
int n, i, t1, t2;
double max, min;
struct book a[10];
max = 1;
min = 13;
t1 = t2 = 0;
scanf("%d", &n);
for ( i=0; i<n; i++ )
{
scanf("\n");
gets(a[i].name);
scanf("%lf", &a[i].price);
if ( max < a[i].price )
{
max = a[i].price;
t1 = i;
}
if ( min > a[i].price )
{
min = a[i].price;
t2 = i;
}
}
printf("%.2lf, %s\n", a[t1].price, a[t1].name);
printf("%.2lf, %s\n", a[t2].price, a[t2].name);
return 0;
}
比如这个代码中max刚开始为什么之能为-1,0,1。min之能是>=13的数。
最大值和最小值的赋值有什么原则吗
因为max会和数组中的值一一比较,从数组第一个元素开始,如果数组中该元素的值比max大,就把那个值赋给max。比如数组有n个元素,会比较n次。如果max定的特别小,那么数组中的最大元素是第几号,就发生几次“赋值给max”的操作,之后max拿到了最大值,只会比较大小,不会有赋值操作。
问题在于如果你max原本的值比数组最大值还大,那么进行n次操作也不会对max赋值一次。max拿不到数组的最大值。
同理min如果定的特别小,也就拿不到数组的最小值。
所以编程开发中获取数组的最值,一定是将数组中某个值赋给max或min,这样一定能得到最值。
|
|