1.将一个长度为10的数列,最大值放第一个,最小值放最后一个。
时间: 2023-05-24 15:06:21 浏览: 53
步骤如下:
1. 找出当前数列中的最大值和最小值。
2. 将最大值与第一个数交换位置。
3. 再将最小值与最后一个数交换位置。
4. 完成。
具体实现代码如下:
```
int arr[] = {5, 7, 1, 8, 3, 9, 4, 6, 2, 10};
int n = sizeof(arr) / sizeof(arr[0]);
// 找到最大值和最小值
int max_idx = 0, min_idx = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[max_idx]) {
max_idx = i;
}
if (arr[i] < arr[min_idx]) {
min_idx = i;
}
}
// 交换位置
swap(arr[max_idx], arr[0]);
swap(arr[min_idx], arr[n-1]);
// 输出结果
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
```
输出结果为:
```
10 7 1 8 3 9 4 6 2 5
```
相关问题
1.将一个长度为10的数列,最大值放第一个,最小值放最后一个。c语言实现
可以按如下方式实现:
```c
#include <stdio.h>
int main() {
int nums[10] = {1, 5, 3, 9, 7, 2, 8, 6, 4, 10}; // 假设该数列为{1, 5, 3, 9, 7, 2, 8, 6, 4, 10}
// 找到最大值和最小值
int max_idx = 0, min_idx = 0;
for (int i = 1; i < 10; i++) {
if (nums[i] > nums[max_idx]) {
max_idx = i;
} else if (nums[i] < nums[min_idx]) {
min_idx = i;
}
}
// 将最大值放在第一个位置,最小值放在最后一个位置
int temp = nums[0];
nums[0] = nums[max_idx];
nums[max_idx] = temp;
temp = nums[9];
nums[9] = nums[min_idx];
nums[min_idx] = temp;
// 输出结果
for (int i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
10 5 3 9 7 2 8 6 4 1
```
c 长度为10的数组,其中最大值和最小值是唯一的且不会出现在训练的第一和最后位置编写程序把序列中的最大值与第一个数交换最小值与最后一个数交换然后输出转换后的数列
好的,我可以帮你写一个 C 语言的程序来实现这个功能。代码如下:
```c
#include <stdio.h>
int main() {
int arr[10] = {7, 8, 2, 6, 3, 4, 5, 10, 1, 9}; // 示例数组
int max = -1, min = 11, max_index, min_index, i;
// 找到最大值和最小值的下标
for (i = 0; i < 10; i++) {
if (arr[i] > max && i != 0 && i != 9) {
max = arr[i];
max_index = i;
}
if (arr[i] < min && i != 0 && i != 9) {
min = arr[i];
min_index = i;
}
}
// 交换最大值和第一个数
int tmp = arr[0];
arr[0] = max;
arr[max_index] = tmp;
// 交换最小值和最后一个数
tmp = arr[9];
arr[9] = min;
arr[min_index] = tmp;
// 输出转换后的数列
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
程序的思路很简单:先找到数组中的最大值和最小值,然后分别交换它们和第一个数和最后一个数,最后输出转换后的数列。注意要排除第一个和最后一个位置,以避免出现最大值和最小值在第一和最后位置的情况。