内存:128  时间:1

题目描述

输入一个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,a[99],max1,min1,max2,min2,b=0;
	scanf("%d",&n);
	while(n>0)
	{
		a[b]=n%10;
		n/=10;
		b++;
	}
	if(a[0]>a[1])
	{
		max1=min2=a[0];
		max2=min1=a[1];
	}
	else
	{
		max1=min2=a[1];
		max2=min1=a[0];
	}
	for(int i=2;i<b;i++)
	{
		if(max1<=a[i])
		{
			max2=max1;
		    max1=a[i];
		}
		else
			if(a[i]<max1&&a[i]>max2)
			{
				max2=a[i];
			}
			if(min1>=a[i])
			{
				min2=min1;
				min1=a[i];
			}
			else
				if(a[i]>min1&&a[i]<min2)
				{
					min2=a[i];
				}
				}
	printf("%d",(max1+max2)-(min1+min2));
	return 0;
}

代码来源于互联网,仅供参考!