鱼C论坛

 找回密码
 立即注册
查看: 756|回复: 5

[已解决]最大值最小值的赋值

[复制链接]
发表于 2020-4-19 09:16:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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的数。
最大值和最小值的赋值有什么原则吗
最佳答案
2020-4-19 09:57:13
因为max会和数组中的值一一比较,从数组第一个元素开始,如果数组中该元素的值比max大,就把那个值赋给max。比如数组有n个元素,会比较n次。如果max定的特别小,那么数组中的最大元素是第几号,就发生几次“赋值给max”的操作,之后max拿到了最大值,只会比较大小,不会有赋值操作。
问题在于如果你max原本的值比数组最大值还大,那么进行n次操作也不会对max赋值一次。max拿不到数组的最大值。
同理min如果定的特别小,也就拿不到数组的最小值。
所以编程开发中获取数组的最值,一定是将数组中某个值赋给max或min,这样一定能得到最值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-19 09:21:01 | 显示全部楼层
语文没学好吧?没看懂你说什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 09:39:25 | 显示全部楼层
没看你的代码,但我觉得没啥区别,都是迭代
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 09:55:04 | 显示全部楼层
scanf("\n"); 这句是啥意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 09:57:13 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
因为max会和数组中的值一一比较,从数组第一个元素开始,如果数组中该元素的值比max大,就把那个值赋给max。比如数组有n个元素,会比较n次。如果max定的特别小,那么数组中的最大元素是第几号,就发生几次“赋值给max”的操作,之后max拿到了最大值,只会比较大小,不会有赋值操作。
问题在于如果你max原本的值比数组最大值还大,那么进行n次操作也不会对max赋值一次。max拿不到数组的最大值。
同理min如果定的特别小,也就拿不到数组的最小值。
所以编程开发中获取数组的最值,一定是将数组中某个值赋给max或min,这样一定能得到最值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

thank you
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表