Problem E: 用数字造数字(II)
2016-01-20 22:27
225 查看
You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。
输入一个3位以上的整数,求其中最大的两个数字之和与最小的数字之和之间的差。例如:输入8729,输出8,即(9+8)-(2+7)=8,再如,输入24825,输出9,即(8+5)-(2+2)=9。
一个3位以上的整数
最大的两个数字之和与最小的数字之和之间的差
将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。
源代码:
你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。
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; }
相关文章推荐
- Java快速入门【1~10】
- 设计模式的5大设计原则
- 记一次驴唇不对马嘴的DIY之旅(七)
- 使用python+selenium完成qq空间自动登录小程序
- 欢迎使用CSDN-markdown编辑器
- Swift 闭包(closure)
- 如何用angularjs制作一个完整的表格之一__创建简单表格
- C# 模拟登陆并继续访问其他页面
- jsp 入门 cookie session
- LinkedList 模拟队列的结构
- Problem D: 使用指针访问数组元素--程序填空
- Libevent简介和使用
- C语言标准
- Android摄像头基础——第二阶段 自定义简单的相机
- C++(2)
- Autofac在MVC4中牛刀小试
- 访微博作业
- basemap and matplotlib
- 反应器(Reactor)模式
- LOMO特征