题目描述: 输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入: 测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出: 对于每组输入,输出交换后的结果。
样例输入:
2
1 3
样例输出:
3 1
下述代码测试结果貌似没问题,但是已通过 AC,忘记了是多组测试数据,少了 while 循环接收数据
- #include <iostream>
- void max_min (int * x, int counter);
- int main()
- {
- using std::cin;
- using std::cout;
- using std::endl;
- int n;
- while (cin >> n)
- {
- int * p_int = new int [n];
- for (int i = 0; i < n; i ++)
- {
- cin >> p_int[i];
- }
- if (n < 2)
- {
- cout << p_int[0];
- cout << endl;
- delete p_int;
- return 0;
- }
- max_min(p_int, n);
- for (int i = 0; i < n; i ++)
- {
- cout << p_int[i];
- if (i < (n - 1))
- {
- cout << " ";
- }
- }
- cout << endl;
- delete p_int;
- }
- return 0;
- }
- void max_min(int * x, int counter)
- {
- int max_i = 0, min_i = 0;
- int max_int, min_int;
- max_int = min_int = x[0];
- for (int i = 1; i < counter; i ++)
- {
- if (x[i] > max_int)
- {
- max_i = i;
- max_int = x[i];
- }
- else if (x[i] < min_int)
- {
- min_i = i;
- min_int = x[i];
- }
- }
- int temp;
- temp = x[max_i];
- x[max_i] = x[min_i];
- x[min_i] = temp;
- }
复制代码 |