用C语言编写数组操作:给定数组 int data[] = {1, 9, 7, 5, 2, 11, 56, 3, 13},完成以下任务: a)对数组进行降序排序。 b)计算并输出数组的平均值、最大值和最小值。 c)将数组中的奇数放在左边,偶数放在右边。
时间: 2024-10-06 15:04:40 浏览: 70
c语言编程题之数组操作最大连续1的个数.zip
在C语言中,我们可以使用标准库函数来完成这些数组操作。以下是针对给定的整数数组 `data[]` 的步骤:
a) 对数组进行降序排序:
```c
#include <stdio.h>
#include <stdlib.h>
void bubble_sort_desc(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int data[] = {1, 9, 7, 5, 2, 11, 56, 3, 13};
int n = sizeof(data) / sizeof(data[0]);
bubble_sort_desc(data, n);
printf("Sorted array in descending order: ");
for (int i = 0; i < n; i++) {
printf("%d ", data[i]);
}
return 0;
}
```
b) 计算并输出数组的平均值、最大值和最小值:
```c
double calculate_average(int arr[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
return sum / n;
}
int main() {
// ... 同样在main函数里调用bubble_sort_desc()
double avg = calculate_average(data, n);
int max_value = *std::max_element(data, data + n);
int min_value = *std::min_element(data, data + n);
printf("Average value: %.2f\n", avg);
printf("Max value: %d\n", max_value);
printf("Min value: %d\n", min_value);
return 0;
}
```
c) 将数组中的奇数放在左边,偶数放在右边:
```c
void separate_numbers(int arr[], int* left, int* right, int n) {
int left_index = 0, right_index = n - 1;
while (left_index < right_index) {
// 找到第一个大于等于right_index的偶数
while (arr[left_index] % 2 != 0 && left_index < right_index) {
left_index++;
}
// 找到第一个小于等于left_index的奇数
while (arr[right_index] % 2 == 0 && left_index < right_index) {
right_index--;
}
if (left_index < right_index) {
std::swap(arr[left_index], arr[right_index]);
left_index++;
right_index--;
}
}
}
int main() {
// ... 同样在main函数里调用bubble_sort_desc()和calculate_average()
separate_numbers(data, data, data + n, n);
// 输出分离后的数组
for (int i = 0; i < n; i++) {
printf("%d ", data[i]);
}
// ... 继续计算其他统计数据
return 0;
}
```
阅读全文