用c语言找出数组中的最大值并将其与数组首元素交换
时间: 2024-05-06 21:17:13 浏览: 9
下面是一个示例代码,其中数组的大小为10,元素类型为整型:
```c
#include <stdio.h>
int main() {
int arr[10] = {4, 8, 1, 9, 3, 6, 2, 7, 5, 0};
int max = arr[0];
int max_index = 0;
int temp;
// 找出最大值及其下标
for (int i = 1; i < 10; i++) {
if (arr[i] > max) {
max = arr[i];
max_index = i;
}
}
// 将最大值与数组首元素交换
temp = arr[0];
arr[0] = max;
arr[max_index] = temp;
// 输出交换后的数组
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
9 8 1 4 3 6 2 7 5 0
```
相关问题
找出数组中最大的几个数并给出索引值C语言
可以使用选择排序或冒泡排序来解决这个问题。以下是使用选择排序的示例代码,用于查找数组中的前k个最大元素以及它们的索引值:
```c
#include <stdio.h>
#define MAX_SIZE 100
void selection_sort(int arr[], int n);
int main() {
int arr[MAX_SIZE], n, k, i, j, max_index;
printf("Enter the size of the array: ");
scanf("%d", &n);
printf("Enter the elements of the array:\n");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Enter the value of k: ");
scanf("%d", &k);
printf("The %d largest elements in the array are:\n", k);
for (i = 0; i < k; i++) {
max_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
printf("%d (%d)\n", arr[max_index], max_index);
int temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
return 0;
}
void selection_sort(int arr[], int n) {
int i, j, min_index, temp;
for (i = 0; i < n - 1; i++) {
min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
```
在上面的代码中,我们使用了一个嵌套的for循环来查找最大元素的索引值,并将其与第i个元素进行交换,以此来逐步排列数组。注意,在选择排序的过程中,我们需要调用另一个函数selection_sort()来进行排序,以便在每次查找最大元素的时候都保证数组是有序的。
使用C语言输入一维数组的6个元素,将最大值与最后一个交换后输出
好的,以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int arr[6];
int max = 0;
int max_index = 0;
// 输入数组元素
printf("请输入6个整数:\n");
for (int i = 0; i < 6; i++) {
scanf("%d", &arr[i]);
}
// 找出最大值及其下标
for (int i = 0; i < 6; i++) {
if (arr[i] > max) {
max = arr[i];
max_index = i;
}
}
// 交换最大值和最后一个元素
int temp = arr[max_index];
arr[max_index] = arr[5];
arr[5] = temp;
// 输出数组元素
printf("交换后的数组为:\n");
for (int i = 0; i < 6; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
希望能对您有所帮助!