一、题目
Description:
有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再最大值与最后一个数交换。输出转换好的序列。
Input:
输入包括两行。 第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列。保证输入数据没有重复的数字。
Output:
输出转换好的序列。数据之间用空格隔开。
Sample Input:
5 2 1 5 4 3
Sample Output:
1 2 3 4 5
二、代码
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int num[10];
for (int i = 0; i < n; i++)
{
scanf("%d", &num[i]);
}
/*先找最小值*/
int min=num[0];
int min_i = 0;
for (int i = 0; i < n; i++)
{
if (min > num[i])
{
min = num[i];
min_i = i;
}
}
int temp1 = num[0];
/*最小值和第一个数交换*/
for (int i = 0; i < n; i++)
{
if (i == 0)
{
temp1 = num[i];
num[i] = num[min_i];
num[min_i] = temp1;
}
}
/*最小值和第一个值交换后,找最大值*/
int max = num[0];
int max_i = 0;
for (int i = 0; i < n; i++)
{
if (max < num[i])
{
max = num[i];
max_i = i;
}
}
/*最大值和最后一个数交换*/
int temp2 = num[0];
for (int i = 0; i < n; i++)
{
if (i == n-1)
{
temp2 = num[i];
num[i] = num[max_i];
num[max_i] = temp2;
}
}
//输出
for (int i = 0; i < n; i++)
{
if (i == n - 1)
printf("%d", num[i]);
else
printf("%d ", num[i]);
}
}