c语言本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5 4 8
时间: 2024-02-16 21:05:26 浏览: 62
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
int main() {
int n, a[10];
int i, max, min;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 找到最小值,与第一个数交换
min = 0;
for (i = 1; i < n; i++) {
if (a[i] < a[min]) {
min = i;
}
}
if (min != 0) {
int temp = a[min];
a[min] = a[0];
a[0] = temp;
}
// 找到最大值,与最后一个数交换
max = n - 1;
for (i = 0; i < n - 1; i++) {
if (a[i] > a[max]) {
max = i;
}
}
if (max != n - 1) {
int temp = a[max];
a[max] = a[n - 1];
a[n - 1] = temp;
}
// 输出序列
for (i = 0; i < n; i++) {
printf("%d", a[i]);
if (i != n - 1) {
printf(" ");
}
}
return 0;
}
```
运行结果:
```
1 2 5 4 8
```
解释一下代码:
首先定义一个长度为 n 的整型数组 `a`,用来存储输入的 n 个整数。
然后使用 `for` 循环将输入的 n 个整数存入数组中。
接着使用 `for` 循环找到最小值,将其与第一个数交换。如果最小值已经是第一个数,则不需要交换。
再使用 `for` 循环找到最大值,将其与最后一个数交换。如果最大值已经是最后一个数,则不需要交换。
最后再使用一个 `for` 循环输出交换后的序列,每个整数后跟一个空格。
阅读全文