描述 给定一个整数序列(保证每一个数字都不相同),找出其中最大和最小值所在的位置,并将最大值和最小值所在位置对调,其他数值的位置保持不变,并输出此序列。 输入 入为两行: 第一行为整数N,表示序列的的长度; ( N ≤ 100 ) (N≤100) 第二行为N个整数,每个数之间以单个空格隔开(0~10000)。 输出 输出为一行,为最值对调后的整数序列 输入样例 1 5 1 2 3 4 5 输出样例1 5 2 3 4 1 c++ 代码
时间: 2024-03-25 19:38:51 浏览: 166
以下是C++代码实现:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int max_pos = max_element(a, a+n) - a;
int min_pos = min_element(a, a+n) - a;
swap(a[max_pos], a[min_pos]);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}
```
首先读入整数序列,然后使用 `max_element` 和 `min_element` 函数分别找到最大值和最小值所在位置,再使用 `swap` 函数将它们对调。最后输出整数序列即可。
相关问题
给定一个整数序列(保证每一个数字都不相同),找出其中最大和最小值所在的位置,并将最大值和最小值所在位置对调,其他数值的位置保持不变,并输出此序列。(使用C++编写
代码如下)
```
#include <stdio.h>
#define MAX_LEN 100
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[MAX_LEN];
int n;
printf("Enter the length of the sequence: ");
scanf("%d", &n);
printf("Enter %d integers: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 找出最大值和最小值位置
int max_pos = 0, min_pos = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[max_pos]) {
max_pos = i;
}
if (arr[i] < arr[min_pos]) {
min_pos = i;
}
}
// 交换最大值和最小值位置
swap(&arr[max_pos], &arr[min_pos]);
// 输出序列
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
本题要求编写程序,找出给定的N个数中的最小值,并将其与第一个数交换,最后输出交换后的序列。题目保证最小值是唯一的。 输入格式: 输入在第一行中给出一个正整数N(1≤n≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。
这是一个简单的编程任务,通常可以使用循环结构来解决。以下是使用Python语言的一个示例解决方案:
```python
def find_min_and_swap(input_list):
n = int(input())
numbers = list(map(int, input().split())) # 将输入的字符串转换为整数列表
# 找出列表中的最小值
min_value = min(numbers)
# 查找并记录最小值第一次出现的位置
min_index = numbers.index(min_value)
# 交换第一个元素和最小值
numbers[0], numbers[min_index] = numbers[min_index], numbers[0]
# 输出交换后的序列
print(' '.join(str(num) for num in numbers))
# 调用函数处理输入
find_min_and_swap([])
```
这个程序首先读取输入的整数N和N个整数,然后找到列表中的最小值及其索引。接着将第一个元素和最小值交换位置,最后打印出修改后的序列。
阅读全文