本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。用c语言解决
时间: 2024-11-17 17:13:58 浏览: 2
c代码-6.3输出10个数的最大值和最小值的大小和下标
在 C 语言中,你可以使用数组来存储整数,并通过遍历数组找出最大值和最小值,然后进行交换。以下是一个简单的示例程序,它实现了上述要求:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void arrange_numbers(int arr[], int size) {
// 找出最小值
int min_index = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < arr[min_index]) {
min_index = i;
}
}
// 将最小值与第一个数交换
swap(&arr[0], &arr[min_index]);
// 找出最大值
int max_index = 0;
for (int i = 0; i < size - 1; i++) {
if (arr[i] > arr[max_index + 1]) { // 避免直接比较最后一个元素
max_index = i;
}
}
// 将最大值与最后一个数交换
swap(&arr[size - 1], &arr[max_index + 1]);
// 输出交换后的序列
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int numbers[] = {5, 3, 8, 1, 9};
int size = sizeof(numbers) / sizeof(numbers[0]);
printf("Original array: ");
arrange_numbers(numbers, size);
return 0;
}
```
在这个程序中,`swap` 函数用于两个变量的值交换,`arrange_numbers` 函数负责整个排序过程。运行这个程序,你会看到原始数组和交换后的数组。
阅读全文