c语言交换最小值和最大值
时间: 2023-09-04 11:16:09 浏览: 162
可以使用数组来存储一组数据,然后遍历数组找到最小值和最大值的下标,最后交换它们的值即可实现交换最小值和最大值的操作。
下面是一个示例代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[] = {5, 1, 9, 3, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int min_idx = 0, max_idx = 0;
for (int i = 1; i < n; i++) {
if (arr[i] < arr[min_idx]) {
min_idx = i;
}
if (arr[i] > arr[max_idx]) {
max_idx = i;
}
}
swap(&arr[min_idx], &arr[max_idx]);
printf("交换后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果:
```
交换后的数组:5 9 1 3 7
```
相关问题
用c语言 交换最小值和最大值 分数 10 作者 C课程组 单位 浙江大学 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5 4 8
好的,请参考以下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语言中,我们可以使用两个变量来存储数组中的最大值和最小值,并通过比较操作来进行交换。以下是一个简单的示例,假设我们有一个整数数组`arr[]`和它的长度`n`:
```c
#include <stdio.h>
// 定义交换函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 函数用于找到并交换数组中的最大值和最小值
void swapMinMax(int arr[], int n) {
// 初始化最大值为第一个元素,最小值也为第一个元素
int max = arr[0], min = arr[0];
// 遍历数组查找最大值和最小值
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
// 如果当前最大值不是最小值,交换它们
if (max != min) {
swap(&max, &min);
}
// 打印结果
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\nAfter swapping: ");
printf("Max: %d, Min: %d\n", max, min);
}
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
swapMinMax(arr, n);
return 0;
}
```
这个程序会首先找到数组中的最大值和最小值,然后判断是否需要交换,最后打印原始数组和交换后的数组。
阅读全文