使用C语言编写 输入若干整数到一个列表,当输入负数时结束输入,计算这个列表中整数的平均数,输出这个列表中大于平均数的整数
时间: 2024-12-12 22:24:11 浏览: 20
在C语言中,你可以按照以下步骤来编写程序实现这一功能:
1. 首先,你需要创建一个动态数组来存储输入的整数,直到遇到负数为止。由于C语言没有内置的动态内存管理,你可以使用`malloc`和`realloc`函数来分配和调整内存大小。
```c
#include <stdio.h>
#include <stdlib.h>
int* create_list(int size) {
int* list = malloc(size * sizeof(int));
if (list == NULL) {
printf("Memory allocation failed.\n");
exit(1);
}
return list;
}
void input_numbers(int* list, int* size) {
int num, index = 0;
while (scanf("%d", &num) == 1 && num >= 0) {
list[index++] = num;
// 检查是否需要扩大数组容量
if (index == *size) {
*size *= 2; // 双倍当前大小
list = realloc(list, *size * sizeof(int));
if (list == NULL) {
printf("Realloc failed.\n");
exit(1);
}
}
}
}
```
2. 接下来,计算列表的平均值,并遍历列表找出大于平均数的整数。
```c
double calculate_average(int* list, int size) {
double sum = 0;
for (int i = 0; i < size; i++) {
sum += list[i];
}
return sum / size;
}
void print_greater_than_average(int* list, int size, double average) {
for (int i = 0; i < size; i++) {
if (list[i] > average) {
printf("%d ", list[i]);
}
}
printf("\n");
}
int main() {
int list_size = 1; // 初始数组大小
int* numbers = create_list(list_size);
// 用户输入和处理
input_numbers(numbers, &list_size);
// 计算平均值并打印结果
double average = calculate_average(numbers, list_size);
printf("Average: %.2f\n", average);
// 打印大于平均数的元素
print_greater_than_average(numbers, list_size, average);
free(numbers); // 释放内存
return 0;
}
```
阅读全文