用c语言实现:先输入数组长度(长度不超过100),然后输入数组元素,先将最大的与第一个元素交换,再将最小的与最后一个元素交换,输出数组。 输入样例:5 12 8 34 1 54 输出样例:54 8 34 12 1
时间: 2023-09-03 14:25:17 浏览: 113
### 回答1:
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int n, i, max = 0, min = 0, temp;
int arr[100];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] > arr[max]) {
max = i;
}
if (arr[i] < arr[min]) {
min = i;
}
}
temp = arr[max];
arr[max] = arr[0];
arr[0] = temp;
temp = arr[min];
arr[min] = arr[n-1];
arr[n-1] = temp;
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
解释一下代码:
1. 首先定义变量n表示数组长度,i表示循环计数器,max和min分别表示最大值和最小值的下标,temp表示交换用的临时变量。
2. 定义一个数组arr,用于存储输入的元素。
3. 通过scanf函数输入n和数组元素,同时用循环找到最大值和最小值的下标。
4. 交换最大值和第一个元素,交换最小值和最后一个元素。
5. 循环输出数组元素。
输入样例:5 12 8 34 1 54
输出样例:54 8 34 12 1
### 回答2:
下面是使用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("请输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 寻找最大值和最小值的索引
int maxIndex = 0, minIndex = 0;
for (i = 1; i < n; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
// 将最大的元素与第一个元素交换
swap(&arr[maxIndex], &arr[0]);
// 将最小的元素与最后一个元素交换
swap(&arr[minIndex], &arr[n-1]);
// 输出数组
printf("输出数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们首先通过程序向用户询问数组的长度。然后我们根据用户给定的长度来定义一个整型数组arr。然后我们通过程序提示用户输入数组的元素,待用户输入完毕后,我们便可以通过遍历整个数组来寻找最大值和最小值的索引。接着我们使用封装好的swap函数将最大的元素与第一个元素交换,将最小的元素与最后一个元素交换。最后我们输出交换后的数组。
### 回答3:
题目要求使用C语言实现一个功能:先输入一个数组长度(不超过100),然后输入数组元素,将最大的元素与第一个元素交换位置,再将最小的元素与最后一个元素交换位置,最后输出数组。
下面是一种实现方式:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n; // 数组长度
int arr[100]; // 定义一个大小为100的数组
int i, max_index, min_index;
// 输入数组长度和元素
printf("请输入数组长度(不超过100):");
scanf("%d", &n);
printf("请输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 找到最大值和最小值的下标
max_index = 0;
min_index = n - 1;
for (i = 1; i < n; i++) {
if (arr[i] > arr[max_index]) {
max_index = i;
}
if (arr[i] < arr[min_index]) {
min_index = i;
}
}
// 将最大值与第一个元素交换
swap(&arr[0], &arr[max_index]);
// 如果最小值是第一个元素,则需要将最小值下标更新为交换后的下标
if (min_index == 0) {
min_index = max_index;
}
// 将最小值与最后一个元素交换
swap(&arr[min_index], &arr[n - 1]);
// 输出数组
printf("交换后的数组为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行程序时,先输入数组的长度(不超过100),然后输入对应长度的数组元素。程序会根据输入进行交换操作,最后输出交换后的数组。
示例输入:
5
12 8 34 1 54
示例输出:
54 8 34 12 1
阅读全文