不额外定义函数 C语言 编写程序,用起泡法对数组a中前n个元素,进行分段排序,其中前一半为从大到小排序后一半为从小到大排序,并把n个数的平均值存在变量average中,n为奇数时,位于中间点的数不需要排序。
时间: 2023-02-06 12:30:50 浏览: 133
以下是 C 语言编写的程序,使用起泡法对数组 a 中前 n 个元素进行分段排序:
```
#include <stdio.h>
// 计算数组 a 中前 n 个元素的平均值
float calc_average(int a[], int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i];
}
return (float)sum / n;
}
int main() {
// 定义数组 a 和变量 n
int a[10] = {3, 5, 2, 1, 6, 4, 9, 8, 7, 0};
int n = 10;
// 对数组 a 进行分段排序
int mid = n / 2; // 中间点的索引
for (int i = 0; i < mid; i++) {
for (int j = 0; j < mid - i - 1; j++) {
if (a[j] < a[j + 1]) {
// 交换 a[j] 和 a[j + 1]
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = mid; i < n; i++) {
for (int j = mid; j < n - i + mid - 1; j++) {
if (a[j] > a[j + 1]) {
// 交换 a[j] 和 a[j + 1]
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
// 输出排序后的数组 a
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 计算数组 a 的平均值并输出
float average = calc_average(a, n);
printf("Average: %f\n", average);
return 0;
}
```
上述程序首先对数组 a 的前半部分进行从大到小排序,然后对数组 a 的后半部分进行从小到大排序。最后调用 calc_average
阅读全文