C语言从键盘输入10个整数存入一维数组,将其中的最大值与最小值交换位置,其他数据位置不变。 注意:数据中只能有一个最大值和一个最小值。
时间: 2025-02-03 16:15:05 浏览: 39
好的,我理解您的要求。我会为您编写一个C语言程序,从键盘输入10个整数存入一维数组,然后找到最大值和最小值并交换它们的位置,同时保持其他数据的位置不变。以下是实现这个功能的C语言代码:
```c
#include <stdio.h>
#define SIZE 10
int main() {
int arr[SIZE];
int i, max, min, max_idx, min_idx, temp;
// 从键盘输入10个整数
printf("请输入10个整数:\n");
for (i = 0; i < SIZE; i++) {
scanf("%d", &arr[i]);
}
// 初始化最大值和最小值及其索引
max = arr[0];
min = arr[0];
max_idx = 0;
min_idx = 0;
// 找到最大值和最小值及其索引
for (i = 1; i < SIZE; i++) {
if (arr[i] > max) {
max = arr[i];
max_idx = i;
}
if (arr[i] < min) {
min = arr[i];
min_idx = i;
}
}
// 交换最大值和最小值的位置
if (max_idx != min_idx) {
temp = arr[max_idx];
arr[max_idx] = arr[min_idx];
arr[min_idx] = temp;
}
// 输出交换后的数组
printf("交换后的数组:\n");
for (i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序的工作原理如下:
1. 首先,我们定义了一个大小为10的整型数组 `arr`。
2. 使用 `for` 循环从键盘输入10个整数并存储在数组中。
3. 初始化最大值 `max`、最小值 `min` 以及它们对应的索引 `max_idx` 和 `min_idx`。
4. 使用 `for` 循环遍历数组,找到最大值和最小值及其对应的索引。
5. 检查最大值和最小值的索引是否不同,如果不同则交换它们的位置。
6. 最后,使用 `for` 循环输出交换后的数组。
这个程序确保了只交换一个最大值和一个最小值的位置,同时保持其他数据的位置不变。
阅读全文
相关推荐

















