c语言随机生成一组(20个)两位整数,完成如下功能: (1)分别统计输出奇偶数的个数,并求出偶数和、奇数平均值; (2)编写排序函数sort(int a[],int n)实现将数组从小到大排序,在主函数中调用sort函数对这组(20个)整数进行排序,输出排序结果; (3)不重新排序的前提下(即:前后对调),把数组改为从大到小排序并输出结果。
时间: 2024-01-10 09:02:21 浏览: 88
好的,我来回答你的问题。
以下是 C 语言代码,实现了你要求的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sort(int a[], int n); // 声明排序函数
int main() {
srand(time(NULL)); // 初始化随机数种子
int nums[20]; // 存放生成的随机数
int even_count = 0; // 偶数个数
int odd_count = 0; // 奇数个数
int even_sum = 0; // 偶数和
double odd_avg = 0; // 奇数平均值
// 生成随机数并计算奇偶数个数、偶数和、奇数平均值
printf("生成的随机数为:");
for (int i = 0; i < 20; i++) {
nums[i] = rand() % 90 + 10; // 生成两位整数
printf("%d ", nums[i]); // 输出生成的随机数
if (nums[i] % 2 == 0) { // 判断偶数
even_count++;
even_sum += nums[i];
} else { // 奇数
odd_count++;
odd_avg = (odd_avg * (odd_count - 1) + nums[i]) / odd_count;
}
}
printf("\n");
// 输出奇偶数个数、偶数和、奇数平均值
printf("偶数个数:%d\n", even_count);
printf("奇数个数:%d\n", odd_count);
printf("偶数和:%d\n", even_sum);
printf("奇数平均值:%f\n", odd_avg);
// 排序并输出结果
sort(nums, 20);
printf("从小到大排序的结果为:");
for (int i = 0; i < 20; i++) {
printf("%d ", nums[i]);
}
printf("\n");
// 从大到小排序并输出结果
printf("从大到小排序的结果为:");
for (int i = 19; i >= 0; i--) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
// 排序函数,实现冒泡排序算法
void sort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
```
希望能够帮到你。
阅读全文