一、题目链接
http://noi.openjudge.cn/ch0105/06/
二、解题思路
◎ 初始时输入第一个整数并假设为最大数max和最小数min;
◎ 以步长1为基准,循环输入其它整数:
→ 如果当前整数小于最小数min,则将min更新为当前整数;
否则如果当前整数大于最大数max,则将max更新为当前整数;
◎ 循环结束后,max就是最大数,min就是最小数,max-min就是最大跨度值。
三、实施步骤
◎ 首先,定义并输入两个int类型的整数n、max,分别代表序列长度、最大数;
◎ 其次,定义两个int类型的整数min、t,分别代表最小数、除第一个整数以外的其它整数,初始时min为max;
◎ 然后,通过整数i标记整数编号,i从2开始,到n为止,步长为1,循环处理如下:
→ 输入当前整数t;
→ 如果t<min:
*** 令min=t;
否则如果t>max:
*** 令max=t;
上述循环结束后,max中存储了最大数,min中存储了最小数;
◎ 最后,输出max-min。
四、Java程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int max = input.nextInt();
int min = max;
int t;
for (int i = 2; i <= n; i++) {
t = input.nextInt();
if (t < min) {
min = t;
}
else if (t > max) {
max = t;
}
}
System.out.print(max - min);
}
}
五、C++程序
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int max;
cin >> max;
int min = max;
int t;
for (int i = 2; i <= n; i++)
{
cin >> t;
if (t < min)
{
min = t;
}
else if (t > max)
{
max = t;
}
}
cout << max - min;
return 0;
}