You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。
Description
输入一个3位以上的整数,求其中最大的两个数字之和与最小的数字之和之间的差。例如:输入8729,输出8,即(9+8)-(2+7)=8,再如,输入24825,输出9,即(8+5)-(2+2)=9。
Input
一个3位以上的整数
Output
最大的两个数字之和与最小的数字之和之间的差
Sample Input
8729
Sample Output
8
HINT
将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。
#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;
}