喵~小sai 发表于 2020-4-19 09:16:33

最大值最小值的赋值

#include <stdio.h>
#include <string.h>
struct book{
        double price;
        char name;
};
int main()
{
    int n, i, t1, t2;
    double max, min;
    struct book a;
        max = 1;
    min = 13;
    t1 = t2 = 0;
    scanf("%d", &n);
        for ( i=0; i<n; i++ )
    {
                scanf("\n");
      gets(a.name);
                scanf("%lf", &a.price);
                if ( max < a.price )
      {
                        max = a.price;
                        t1 = i;
                }
                if ( min > a.price )
      {
                        min = a.price;
                        t2 = i;
                }
        }
        printf("%.2lf, %s\n", a.price, a.name);
        printf("%.2lf, %s\n", a.price, a.name);
    return 0;
}
比如这个代码中max刚开始为什么之能为-1,0,1。min之能是>=13的数。
最大值和最小值的赋值有什么原则吗

ba21 发表于 2020-4-19 09:21:01

语文没学好吧?没看懂你说什么

love_qj 发表于 2020-4-19 09:39:25

没看你的代码,但我觉得没啥区别,都是迭代

chxchxkkk 发表于 2020-4-19 09:55:04

scanf("\n"); 这句是啥意思

倒戈卸甲 发表于 2020-4-19 09:57:13

因为max会和数组中的值一一比较,从数组第一个元素开始,如果数组中该元素的值比max大,就把那个值赋给max。比如数组有n个元素,会比较n次。如果max定的特别小,那么数组中的最大元素是第几号,就发生几次“赋值给max”的操作,之后max拿到了最大值,只会比较大小,不会有赋值操作。
问题在于如果你max原本的值比数组最大值还大,那么进行n次操作也不会对max赋值一次。max拿不到数组的最大值。
同理min如果定的特别小,也就拿不到数组的最小值。
所以编程开发中获取数组的最值,一定是将数组中某个值赋给max或min,这样一定能得到最值。

喵~小sai 发表于 2020-4-19 10:03:28

倒戈卸甲 发表于 2020-4-19 09:57
因为max会和数组中的值一一比较,从数组第一个元素开始,如果数组中该元素的值比max大,就把那个值赋给max ...

thank you
页: [1]
查看完整版本: 最大值最小值的赋值