用C 1.随机生成一组(20个)两位整数,完成如下功能: (1)分别统计输出奇偶数的个数,并求出偶数和、奇数平均值; (2)编写排序函数 sort(inta[],intn) 实现将数组从小到大排序,在主函数中调用sort函数对这组(20个)整数进行排序,输出排序结果; (3)不重新排序的前提下(即:前后对调),把数组改为从大到小排序并输出结果。
时间: 2024-03-09 09:50:10 浏览: 141
好的,让我来回答你的问题。
以下是用 C 语言编写的程序实现你要求的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void count(int a[], int n);
void sort(int a[], int n);
void reverse(int a[], int n);
int main() {
int a[20], i;
// 生成随机整数
srand((unsigned) time(NULL));
for (i = 0; i < 20; i++) {
a[i] = rand() % 90 + 10;
printf("%d ", a[i]);
}
printf("\n");
// 统计奇偶数的个数并求出偶数和、奇数平均值
count(a, 20);
// 对数组进行排序并输出结果
sort(a, 20);
printf("从小到大排序后的结果:\n");
for (i = 0; i < 20; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 把数组改为从大到小排序并输出结果
reverse(a, 20);
printf("从大到小排序后的结果:\n");
for (i = 0; i < 20; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void count(int a[], int n) {
int odd = 0, even = 0, i;
double odd_avg, even_sum = 0;
for (i = 0; i < n; i++) {
if (a[i] % 2 == 0) {
even++;
even_sum += a[i];
} else {
odd++;
odd_avg += (a[i] - odd_avg) / odd;
}
}
printf("奇数个数:%d\n", odd);
printf("偶数个数:%d\n", even);
printf("偶数和:%g\n", even_sum);
printf("奇数平均值:%g\n", odd_avg);
}
void sort(int a[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
void reverse(int a[], int n) {
int i, temp;
for (i = 0; i < n / 2; i++) {
temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
}
```
这个程序会生成 20 个两位整数,并完成你的要求。其中,`count` 函数用于统计奇偶数的个数并求出偶数和、奇数平均值;`sort` 函数用于将数组从小到大排序;`reverse` 函数用于将数组改为从大到小排序。
阅读全文