一个包含n(2<=n<=50)个实数的数列,从中找2个数,使得这两个数的差是最大的。

问题分析:算式a-b,要使得值最大,那么,要求被减数a最大,减数b最小,从而使得a-b最大。从数列中,找出最大的数,存入max变量;找出最小的数,存入min变量。显然,max-min的值是最大的。
输入:两行,第一行一个正整数,表示数列中的实数个数n;
第二行,n个数,表示数列的n个实数;
输出:一行一个数,表示数列的最大差值(保留2位小数)。

#include <stdio.h>
int main()
{
double arr[50];
int n, i;
double max, min;
scanf("%d", &n);
for (i = 0; i < n; i++) 
{
scanf("%lf", &arr[i]);
if (i == 0) max = min = arr[0];
if (max < arr[i]) max = arr[i];
if (min > arr[i]) min = arr[i];
}
printf("%.2lf", max - min);
}

这个问题分析的一下可以知道解决问题的思路
1 先用冒泡排序,比如arr[0]放最小,arr[49]放最大
2 打印 arr[49]- arr[0]


#include<stdio.h>

int main(){
    int n,i;
    double a,b,min=0,max=0,num=0;
    scanf("%d\n",&n);
    scanf("%lf",&a);
    scanf("%lf",&b);
    if(a>b){
        max=a;
        min=b;
    }
    else if(a<=b){
        max=b;
        min=a;
    }
    for(i=2;i<n;i++){
        scanf("%lf",&a);
        if(a>max){
            max=a;
        }
        else if(a<min){
            min=a;
        }
    }
    num=max-min;
    printf("%.2f",num);
    return 0;
}