3552 - 统计(2)

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

从键盘任意输入n个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组

题目输入

首先输入一个整数n (2<=n<=20)

再输入n个整数。

题目输出

输出排序后的n个数。

输入/输出样例

输入格式

5
1 2 3 4 5

输出格式

5 2 3 4 1

C语言解答

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define ARR_SIZE 20
void  MaxMinExchang(int a[], int n)
{
	int  maxValue = a[0], minValue = a[0], maxPos = 0, minPos = 0;
	int  i, temp;

	for (i=1; i<n; i++)
	{
		if (a[i] > maxValue)
		{
				maxValue = a[i];
            	maxPos = i;
		}
        	if (a[i] < minValue)
		{
				minValue = a[i];
            	minPos = i;
       	}
	}
	temp = a[maxPos];
	a[maxPos] = a[minPos];
	a[minPos] = temp;
}
int main()
{
 //  freopen("in","r",stdin);
  //  freopen("out","w",stdout);

	int a[ARR_SIZE], i, n;
	while(scanf("%d", &n) !=EOF){
 	for (i=0; i<n; i++)
 	{
		scanf("%d", &a[i]);
 	}

	MaxMinExchang(a, n);
	for (i=0; i<n-1; i++)
	{
         	printf("%d ", a[i]);
	}
	printf("%d\n",a[i]) ;
	}
  return 0;
}

C++解答

#include<cstdio>
using namespace std;
int main()
{
	int n;
	while (scanf("%d", &n) != EOF)
	{
		int i;
		int arr[1000], max, min, temp;
		int maxnum = 0, minnum = 0;
		for (i = 0; i < n; i++)
		{
			scanf("%d", &arr[i]);
			if (i == 0)
			{
				max = arr[0];
				min = arr[0];
			}
			else
			{
				if (arr[i]>max)
				{
					max = arr[i];
					maxnum = i;
				}
				if (arr[i] < min)
				{
					min = arr[i];
					minnum = i;
				}
			}
		}
		temp = arr[maxnum];
		arr[maxnum] = arr[minnum];
		arr[minnum] = temp;
		for (i = 0; i < n; i++)
		{
			if (i == n - 1)
				printf("%d", arr[i]);
			else
				printf("%d ", arr[i]);
		}
		printf("\n");
	}
}