用c语言 交换最小值和最大值 分数 10 作者 C课程组 单位 浙江大学 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5 4 8
时间: 2024-02-25 14:58:44 浏览: 47
好的,请参考以下C语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, a[10];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 找到最小值和最小值的下标
int min = a[0], min_index = 0;
for (int i = 1; i < n; i++) {
if (a[i] < min) {
min = a[i];
min_index = i;
}
}
// 将最小值和第一个数交换
int temp = a[0];
a[0] = min;
a[min_index] = temp;
// 找到最大值和最大值的下标
int max = a[0], max_index = 0;
for (int i = 1; i < n; i++) {
if (a[i] > max) {
max = a[i];
max_index = i;
}
}
相关问题
本题要求用C语言编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
以下是用C语言编写的程序,实现了题目要求的功能:
```c
#include <stdio.h>
void swap(int *a, int *b) { // 定义交换函数
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n; // 数组长度
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n]; // 定义数组
printf("请输入一系列整数:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 找最小值并与第一个数交换
int min_index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] < arr[min_index]) {
min_index = i;
}
}
swap(&arr[0], &arr[min_index]);
// 找最大值并与最后一个数交换
int max_index = n - 1;
for (int i = n - 2; i >= 0; i--) {
if (arr[i] > arr[max_index]) {
max_index = i;
}
}
swap(&arr[n - 1], &arr[max_index]);
// 输出交换后的序列
printf("交换后的序列为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
程序先读入数组长度和一系列整数,然后找出最小值并与第一个数交换,再找出最大值并与最后一个数交换,最后输出交换后的序列。其中交换函数 `swap` 可以复用,方便代码维护。
用c语言本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。
以下是用C语言编写的程序,实现题目要求的功能:
```c
#include <stdio.h>
int main() {
int n, min, max, temp;
scanf("%d", &n); // 输入整数的个数
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]); // 输入整数序列
if (i == 0 || arr[i] < min) {
min = arr[i]; // 找到最小值
}
if (i == 0 || arr[i] > max) {
max = arr[i]; // 找到最大值
}
}
// 交换最小值与第一个数
temp = arr[0];
arr[0] = min;
for (int i = 1; i < n; i++) {
if (arr[i] == min) {
arr[i] = temp;
break;
}
}
// 交换最大值与最后一个数
temp = arr[n - 1];
arr[n - 1] = max;
for (int i = n - 2; i >= 0; i--) {
if (arr[i] == max) {
arr[i] = temp;
break;
}
}
// 输出交换后的序列
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
程序的具体实现思路如下:
1. 首先输入整数的个数,以确定数组的大小,然后依次输入整数序列,并在输入的同时找到最小值和最大值。这里使用了两个变量 min 和 max 分别记录最小值和最大值。
2. 找到最小值后,将其与数组的第一个数交换。这里使用一个临时变量 temp 来记录数组第一个数的值,然后将最小值赋值给数组第一个数,最后再找到数组中的最小值,并将其赋值为 temp。
3. 找到最大值后,将其与数组的最后一个数交换。这里也是使用一个临时变量 temp 来记录数组最后一个数的值,然后将最大值赋值给数组最后一个数,最后再找到数组中的最大值,并将其赋值为 temp。
4. 最后,输出交换后的序列即可。
需要注意的一点是,由于题目保证最大和最小值都是唯一的,因此在交换时可以直接找到相应的元素进行交换,不用担心误交换的情况。