利用C语言从键盘上输入n个整数,编写程序按降序对其排列并输出,最后统计其中大于平均值的数的个数。有注释
时间: 2024-02-06 16:12:21 浏览: 74
好的,以下是代码及注释:
```c
#include <stdio.h>
int main() {
int n, i, j, temp, sum = 0, *a;
float avg;
printf("请输入整数的个数:");
scanf("%d", &n);
a = (int*)malloc(n * sizeof(int)); // 动态分配内存,长度为n
// 输入n个整数
for (i = 0; i < n; i++) {
printf("请输入第%d个整数:", i + 1);
scanf("%d", &a[i]);
sum += a[i]; // 累加求和
}
avg = sum / (float)n; // 计算平均值
// 冒泡排序,按降序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
printf("按降序排列后的结果为:");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
if (a[i] > avg) {
sum++; // 统计大于平均值的数的个数
}
}
printf("\n大于平均值的数的个数为:%d\n", sum);
free(a); // 释放动态分配的内存
return 0;
}
```
这个程序与上一个程序的主要区别在于使用了动态内存分配。通过调用`malloc()`函数动态分配内存,长度为n,然后在输入n个整数的过程中累加求和。接着计算出平均值,然后使用冒泡排序算法按降序排列输入的整数,最后输出结果并统计大于平均值的数的个数。最后,通过调用`free()`函数释放动态分配的内存。
阅读全文