标题:求好心人帮看下代码
只看楼主
c_fish
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-9-27
 问题点数:0 回复次数:6 
求好心人帮看下代码
新手自学C,求帮帮忙!!!    求数组中最大值和最小值的差  代码如下:
#include<stdio.h>
double gap(double ar[], int n);
int main(void)
{
    double num[10]={23.1, 2.1 ,32.1, 66.1, 1.1, 5.1, 25.1, 7.1, 3.1, 20.1};
    printf("该数组中最大值和最小值的差是:%f\n", gap(num, 10));

    return 0;
}
double gap(double ar[], int n)
{
    int i;
    double max=0.0,min=0.0;
    for(i=0;i<n;i++)
    {
        if(max<=ar[i])
            max=ar[i];
        if(min>=ar[i])
            min=ar[i];
    }
   
   
    return (max-min);
}
搜索更多相关主题的帖子: 好心 代码 double int max 
2017-09-28 19:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
double gap(double ar[], int n)
{
    int i,max=0,min=0;
    for (i=1; i<n; i++)
    {
        if (ar[i] > ar[max])
            max = i;
        else if(ar[i] < ar[min])
            min = i;
    }
    return (ar[max]-ar[min]);
}
2017-09-28 20:46
c_fish
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-9-27
得分:0 
回复 2楼 吹水佬
我这样修改之后,可以运行,而且运行正确,代码如下:  这是为什么呢?
#include<stdio.h>
double gap(double ar[], int n);
int main(void)
{
    double ar[5]={1.1, 2.2, 8.3, 4.4, 5.6};
    printf("该数组中最大值和最小值的差是%f\n",gap(ar,5));

    return 0;
}
double gap(double ar[],int n)
{
    int i;
    double max=ar[0],min=ar[0];
    for(i=0;i<n;i++)
    {
        if(max<ar[i])
            max=ar[i];
        if(min>ar[i])
            min=ar[i];
    }

    return (max-min);
}
2017-09-28 21:09
c_fish
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-9-27
得分:0 
回复 2楼 吹水佬
谢谢!运行了下,你的代码也是正确的。
2017-09-28 21:10
c_fish
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-9-27
得分:0 
回复 2楼 吹水佬
我原来的代码中直接初始化了double max=0.0,min=0.0;   而在比较的过程中
         if(max<=ar[i])
            max=ar[i];
        if(min>=ar[i])
            min=ar[i];
max和min都事先初始化为0了。 在该数组(数组元素全为正!)中,max可以遍历比较找出最大值。但是,由于该数组元素全为正!所以遍历出最小值的时候,也就只能是我事先初始化的值为0!  所以max是该数组中元素的最大值!但是min的值不是该数组中最小的值,而是我们初始化的值0!!!所以,该方式是错误的!   我分析的对么?自学C,求好心人多多帮忙!!!
2017-09-28 21:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 5楼 c_fish
1、max、min初始化必需是队列中的数,否则有可能结果不在队列中。
2、取数组值或取数组下标都可以,觉得取下标好点。
3、少走一些多余的路
  如:
    if (max...)
        max...;
    if (min...)
        min...;
    可改为:
    if (max...)
        max...;
    else if (min...)
        min...;
2017-09-28 22:29
c_fish
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-9-27
得分:0 
回复 6楼 吹水佬
嗯嗯,谢谢。
2017-10-02 12:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481016-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.769031 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved