九度OJ 1053:互换最大最小数 (基础题)
- 题目描述:
-
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
- 输入:
-
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
- 输出:
-
对于每组输入,输出交换后的结果。
- 样例输入:
-
2 1 3
- 样例输出:
-
3 1
思路:
遍历数组的过程中记录最大数和最小数并记录位置,然后调换即可。
代码:
#include <stdio.h> int main(void) { int n, a[20]; int i, max, min; while (scanf("%d",&n) != EOF) { if (n<1 || n>20) return 0; for (i=0; i<n; i++) scanf("%d", &a[i]); for (i=0; i<n; i++) { if (i==0) { max = 0; min = 0; continue; } if (a[i] > a[max]) max = i; if (a[i] < a[min]) min = i; } int tmp; tmp = a[min]; a[min] = a[max]; a[max] = tmp; for (i=0; i<n; i++) { printf("%d", a[i]); if (i!=n-1) printf(" "); } printf("\n"); } return 0; } /************************************************************** Problem: 1053 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/
编程算法爱好者。