没有思考,直接按成法来,第一组数据都没通过。
最关键的在于 if else 的结构没有考虑到如果输入的数都相等怎么办,另外如果输入的数是按增序排列也会得到错误的结果:
1 # include <stdio.h>
2
3 int main()
4 {
5 int x, N, min, max;
6
7 while (~scanf("%d", &N))
8 {
9 max = 0;
10 min = 100;
11 while (N--)
12 {
13 scanf("%d", &x);
14 if (x > max) max = x;
15 else if (x < min) min = x;
16 }
17 printf("%d %d\n", max, min);
18 }
19
20 return 0;
21 }
中间有几次是带着这两句话:
1 freopen("in.txt", "r", stdin);
2 freopen("out.txt", "w", stdout);
看来最保险的做法是用初值代替边界:
1 # include <stdio.h>
2
3 int main()
4 {
5 int x, N, min, max;
6
7 // freopen("in.txt", "r", stdin);
8 // freopen("out.txt", "w", stdout);
9
10 while (~scanf("%d", &N))
11 {
12 if (N-- > 0) scanf("%d", &max) ;
13 min = max;
14 while (N--)
15 {
16 scanf("%d", &x);
17 if (x > max) max = x;
18 else if (x < min) min = x;
19 }
20 printf("%d %d\n", max, min);
21 }
22
23 return 0;
24 }
囧啊。。。。。