Submit: 599 Solved: 445
[ Submit][ Status][ Web Board]
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
将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。
Source
代码:
#include<stdio.h>
int main()
{
int i,t,b=0;
int n,x;
int a[99];
scanf("%d",&n);
while(1)
{
a[b]=n%10;
n=n/10;
if(n<1)
break;
b++;
}
for(i=0;i<b;i++)
for(t=0;t<b-i;t++)
{
if(a[t]>a[t+1])
{
x=a[t];
a[t]=a[t+1];
a[t+1]=x;
}
}
printf("%d",a[b]+a[b-1]-a[0]-a[1]);
return 0;
}