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.dreamwings.cn -------------------