YTU 2801: 用数字造数字(II)

2801: 用数字造数字(II)

时间限制: 1 Sec  内存限制: 128 MB
提交: 244  解决: 168

题目描述

输入一个3位以上的整数,求其中最大的两个数字之和与最小的数字之和之间的差。例如:输入8729,输出8,即(9+8)-(2+7)=8,再如,输入24825,输出9,即(8+5)-(2+2)=9。

输入

一个3位以上的整数

输出

最大的两个数字之和与最小的数字之和之间的差

样例输入

8729

样例输出

8

提示

将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。

你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

#include <stdio.h>
int main( )
{
    int n,arr[15],m=0,i,ma1,ma2,mi1,mi2,t;
    scanf("%d",&n);
    while(n>0)
    {
        arr[m++]=n%10;
        n/=10;
    }
    for(i=0; i<m-1; i++)
    {
        if(arr[i]>arr[i+1])
        {
            t=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=t;
        }
    }
    for(i=0; i<m-2; i++)
    {
        if(arr[i]>arr[i+1])
        {
            t=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=t;
        }
    }
    ma1=arr[m-1],ma2=arr[m-2];
    for(i=0; i<m-1; i++)
    {
        if(arr[i]<arr[i+1])
        {
            t=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=t;
        }
    }
    for(i=0; i<m-2; i++)
    {
        if(arr[i]<arr[i+1])
        {
            t=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=t;
        }
    }
    mi1=arr[m-1],mi2=arr[m-2];
    printf("%d",ma1+ma2-mi1-mi2);
    return 0;
}

原文地址:https://www.cnblogs.com/im0qianqian/p/5989631.html