c语言编写输入n个大于e的正整数,首先进行排序,然后从小到大分2行输出,其中第一行所有的数均小于平均值,n这里小于10日。
时间: 2024-05-07 18:19:01 浏览: 96
以下是使用 C 语言编写的解决方案:
```c
#include <stdio.h>
int main() {
int n, e, sum = 0;
float avg;
printf("请输入 n 和 e 的值:\n");
scanf("%d%d", &n, &e);
int arr[n];
printf("请输入 %d 个大于 %d 的正整数:\n", n, e);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] > e) {
sum += arr[i];
} else {
i--;
n--;
}
}
avg = (float) sum / 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;
}
}
}
printf("排序后的结果为:\n");
int i = 0;
while (arr[i] < avg && i < n) {
printf("%d ", arr[i]);
i++;
}
printf("\n");
while (i < n) {
printf("%d ", arr[i]);
i++;
}
return 0;
}
```
解释一下代码的实现过程:
1. 首先,我们通过 `scanf` 函数输入 `n` 和 `e` 的值,然后定义一个长度为 `n` 的数组 `arr`,用于存放输入的正整数。
2. 接着,我们通过 `for` 循环逐个读入这 `n` 个正整数,并且判断它们是否大于 `e`。如果大于 `e`,我们就将其加入到求平均数的总和 `sum` 中;否则,我们将这个数排除,并将 `n` 的值减一,以保证后续操作不会出错。
3. 然后,我们通过冒泡排序对数组 `arr` 进行排序,以便后面输出时能够按照从小到大的顺序输出。
4. 接着,我们通过 `while` 循环从数组 `arr` 中取出所有小于平均值的数,并输出到第一行中去。
5. 最后,我们通过另一个 `while` 循环输出所有大于等于平均值的数,并输出到第二行中去。
注意:这里我们使用了 `while` 循环而不是 `for` 循环的原因是,我们需要在输出第一行后,直接从第二行开始输出,而不是再从数组的头部开始遍历一遍。
阅读全文