用c语言 交换最小值和最大值 分数 10 作者 C课程组 单位 浙江大学 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5 4 8
时间: 2024-02-25 22:58:44 浏览: 270
好的,请参考以下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, i;
printf("请输入整数的个数: ");
scanf("%d", &n);
int arr[n];
printf("请输入 %d 个整数: ", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 找到最小值和最大值及其索引
int minIdx = 0, maxIdx = 0;
for (i = 1; i < n; i++) {
if (arr[i] < arr[minIdx]) {
minIdx = i;
}
if (arr[i] > arr[maxIdx]) {
maxIdx = i;
}
}
// 交换最小值与第一个数
if (minIdx != 0) {
swap(&arr[0], &arr[minIdx]);
}
// 如果最大值在第一个位置,更新最大值索引
if (maxIdx == 0) {
maxIdx = minIdx;
}
// 交换最大值与最后一个数
if (maxIdx != n - 1], &arr[maxIdx]);
}
// 输出结果
printf("交换后的序列: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序的工作流程如下:
1. 首先,我们定义了一个`swap`函数来交换两个整数的值。
2. 在`main`函数中,我们先读取用户输入的整数个数和具体的整数序列。
3. 然后,我们遍历数组,找出最小值和最大值的索引。
4. 接下来,我们将最小值与第一个数交换。这里使用了条件判断,只有在最小值不是第一个数时才进行交换。
5. 如果最大值原来在第一个位置,我们需要更新最大值索引,因为它已经被最小值替换了。
6. 然后,我们将最大值与最后一个数交换。同样,我们使用条件判断,只有在最大值不是最后一个数时才进行交换。
7. 最后,我们输出交换后的序列。
这个程序满足了题目的所有要求:它会找到最小值并与第一个数交换,找到最大值并与最后一个数交换,然后输出最终的序列。
用c语言本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n;
scanf("%d", &n);
int nums[n];
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
int max_idx = 0, min_idx = 0;
for (int i = 1; i < n; i++) {
if (nums[i] > nums[max_idx]) {
max_idx = i;
}
if (nums[i] < nums[min_idx]) {
min_idx = i;
}
}
swap(&nums[0], &nums[min_idx]);
swap(&nums[n-1], &nums[max_idx]);
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
阅读全文
相关推荐












