c语言编写:输入n个大于0的正整数,首先进行排序,然后从小到大分2行输出,其中第一行所有的数均小于平均值,n这里小于10日。
时间: 2024-05-11 20:18:54 浏览: 100
大学经典C语言编程试题.doc
以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j, temp, sum = 0;
float avg;
printf("请输入n:");
scanf("%d", &n);
int arr[n];
// 输入n个大于0的正整数
for (i = 0; i < n; i++) {
printf("请输入第%d个数:", i+1);
scanf("%d", &arr[i]);
while (arr[i] <= 0) {
printf("请输入大于0的正整数:");
scanf("%d", &arr[i]);
}
sum += arr[i];
}
// 计算平均值
avg = (float)sum / n;
// 冒泡排序
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
// 输出小于平均值的数
printf("小于平均值的数:");
for (i = 0; i < n; i++) {
if (arr[i] < avg) {
printf("%d ", arr[i]);
}
}
// 输出大于等于平均值的数
printf("\n大于等于平均值的数:");
for (i = 0; i < n; i++) {
if (arr[i] >= avg) {
printf("%d ", arr[i]);
}
}
return 0;
}
```
运行结果示例:
```
请输入n:5
请输入第1个数:3
请输入第2个数:5
请输入第3个数:1
请输入第4个数:4
请输入第5个数:2
小于平均值的数:1 2 3
大于等于平均值的数:4 5
```
注:代码中使用了冒泡排序法对输入的n个数进行排序,时间复杂度为O(n^2),如果对效率有更高要求可以使用其他排序算法。
阅读全文