c语言怎么让数组中的数全部互相交换
时间: 2024-04-09 15:28:41 浏览: 11
要让数组中的数全部互相交换,可以使用一个临时变量来存储交换过程中的中间值。以下是一个示例代码:
```c
#include <stdio.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
// 交换数组中所有元素
for (int i = 0; i < 5 / 2; i++)
{
swap(&arr[i], &arr[4 - i]);
}
// 输出交换后的数组
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
在上述代码中,`swap()` 函数用于交换两个整数的值。在 `main()` 函数中,通过循环将数组中的元素从两端开始依次交换,直到中间位置。最后,通过循环输出交换后的数组。
相关问题
C语言求数组中位数
要求数组中位数,需要先将数组进行排序,然后再根据数组元素个数的奇偶性,选择不同的计算方式。
以下是使用C语言实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
double median(int arr[], int n) {
qsort(arr, n, sizeof(int), compare); // 先将数组排序
if (n % 2 == 0) { // 数组元素个数为偶数
return (double)(arr[n/2 - 1] + arr[n/2]) / 2.0;
} else { // 数组元素个数为奇数
return (double)arr[n/2];
}
}
int main() {
int arr[] = {3, 7, 1, 9, 2};
int n = sizeof(arr) / sizeof(arr[0]);
double m = median(arr, n);
printf("Median = %lf", m);
return 0;
}
```
输出结果为:
```
Median = 3.000000
```
在该示例代码中,`compare()` 函数用于比较两个元素的大小,`qsort()` 函数用于对数组进行排序,`median()` 函数用于计算中位数。其中,计算中位数时,首先将数组排序,然后根据数组元素个数的奇偶性,选择不同的计算方式。
c语言将数组中的数逆序排放
在C语言中,可以使用一个简单的算法来将数组中的元素逆序排放。以下是相应的代码实现:
```c
#include <stdio.h>
void reverseArray(int arr[], int length) {
int start = 0;
int end = length - 1;
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 更新start和end的值,以便迭代数组
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]);
printf("原始数组为:");
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
reverseArray(arr, length);
printf("\n逆序排放后的数组为:");
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
上述代码中的`reverseArray`函数接受一个整数类型的数组和数组的长度作为参数。通过使用两个指针`start`和`end`指向数组的第一个和最后一个元素,并通过不断交换它们的值,就可以实现数组的逆序排放。最后在`main`函数中调用`reverseArray`函数,并输出逆序排放后的数组。