小胖学长找宝藏

时间: 1ms        内存:128M

描述:

注:本题只需要提交填写部分的代码,请按照C语言方式提交。


某天小胖学长听一位高人说有个山洞里存在一个背后隐藏着巨大宝藏的大门,而这个大门的钥匙则是一个特殊的数字,经过小胖细心研究发现,这个山洞里掉落了多数数字,而这个特殊的钥匙则是这些数字中最大值与最小值的差,可是小胖子很懒,想请你帮他找出这个特殊的钥匙。 




#include<stdio.h>

#define MaxSize 20

int Subtract(int *p)
{
    int MaxNum,MinNum;
        /*在此之间完善代码*/
        ……
        /*在此之间完善代码*/
    return MaxNum – MinNum;
}

int main()
{
    int i;
    int NUM[MaxSize];
    for(i = 0;i<16;i++)
        scanf(“%d”,&NUM[i]);
    NUM[i] = ‘\0’;
    int *p;
    p = NUM;
    printf(“%d”,Subtract(p));
    return 0;
}

输入:

输入山洞中掉落的数字

输出:

最大值与最小值的差

示例输入:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

示例输出:

15

提示:

参考答案(内存最优[1120]):

#include<stdio.h>

#define MaxSize 20


int Subtract(int *p)
{
    int MaxNum,MinNum;
        int i;
        MaxNum=*p;
         MinNum=*p;

        for(i=0;i<16;i++)
        {
            if(*(p+i)>=MaxNum)
                MaxNum=*(p+i);
            if(*(p+i)<=MinNum)
                MinNum=*(p+i);
        }
return MaxNum - MinNum;
}

int main()
{
    int i;
    int NUM[MaxSize];
    for(i = 0;i<16;i++)
        scanf("%d",&NUM[i]);
    NUM[i] = '\0';
    int *p;
    p = NUM;
    printf("%d",Subtract(p));
    return 0;
}

参考答案(时间最优[1]):

#include<stdio.h>

#define MaxSize 20


int Subtract(int *p)
{
    int MaxNum,MinNum;
MaxNum=-1;
        MinNum=101;
        int i;
        for(i=0;i<16;i++)
        {
            if(MaxNum<*(p+i))MaxNum=*(p+i);
            if(MinNum>*(p+i))MinNum=*(p+i);
        }
return MaxNum - MinNum;
}

int main()
{
    int i;
    int NUM[MaxSize];
    for(i = 0;i<16;i++)
        scanf("%d",&NUM[i]);
    NUM[i] = '\0';
    int *p;
    p = NUM;
    printf("%d",Subtract(p));
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。