[PTA]实验7-1-10 交换最小值和最大值

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验7-1-10 交换最小值和最大值相关的知识,希望对你有一定的参考价值。

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5
8 2 5 1 4

输出样例:

1 2 5 4 8 
  • 提交结果:

在这里插入图片描述

  • 源码:
#include<stdio.h>
int main(void)
{
	int N;
	int array[10];

	scanf("%d", &N);

	for (int i = 0; i < N; i++)
	{
		scanf("%d", &array[i]);
	}

	// 先假设第一个数是最大数、最小数,后续比较过程中更新其值
	minIndex = maxIndex = 0;

	for (int i = 0; i < N; i++)
	{
		// 后续输入过程中存在比max大的数
		if (array[i] > array[maxIndex])
		{
			maxIndex = i;
		}

		// 后续输入过程中存在比min小的数
		if (array[i] < array[minIndex])
		{
			minIndex = i;
		}
	}

	// 分情况讨论
	if (minIndex == 0)				// 最小的数在开头,则将最大的数交换到末尾
	{
		int temp = array[N - 1];
		array[N - 1] = array[maxIndex];
		array[maxIndex] = temp;
	}
	else if (maxIndex == N - 1)		// 最大的数在末尾,则将最小的数交换到开头
	{
		int temp = array[0];
		array[0] = array[minIndex];
		array[minIndex] = temp;
	}
	else if (minIndex == N - 1)		// 最小的数在末尾,先将最大的数换到末尾,再将最小的数换到开头
	{
		// 将最大的数与最小的数交换
		int temp = array[N - 1];
		array[N - 1] = array[maxIndex];
		array[maxIndex] = temp;

		minIndex = maxIndex;

		// 将最小的数交换到开头
		temp = array[minIndex];
		array[minIndex] = array[0];
		array[0] = temp;
	}
	else if (maxIndex == 0)			// 最大的数在开头,先将最小的数换到开头,再将最大的数换到最后
	{
		// 将最小的数与最大的数交换
		int temp = array[0];
		array[0] = array[minIndex];
		array[minIndex] = temp;

		maxIndex = minIndex;

		// 将最大的数交换到末尾
		temp = array[N - 1];
		array[N - 1] = array[maxIndex];
		array[maxIndex] = temp;
	}
	else // 最大最小数均在中间,直接将最大数交换到末尾,再将最小数交换到开头
	{
		// 最小数交换到开头
		int temp = array[0];
		array[0] = array[minIndex];
		array[minIndex] = temp;

		// 最大数交换到末尾
		temp = array[N - 1];
		array[N - 1] = array[maxIndex];
		array[maxIndex] = temp;
	}

	for (int i = 0; i < N; i++)
	{
		printf("%d ", array[i]);
	}

	return 0;
}

以上是关于[PTA]实验7-1-10 交换最小值和最大值的主要内容,如果未能解决你的问题,请参考以下文章

PTA数组实验

[PTA]实验4-1-1 最大公约数和最小公倍数

其他题!!

PTA实验作业(数组)

第1415教学周作业

[PTA]实验7-1-2 求最大值及其下标