给定一个包含正整数和0(表示输入结束)的数组,数组长度在4到20之间,如何使用c语言(不适用c++)编写程序来:1. 计算数组中所有非零数字的平均值?2. 对于每个非零数字,如果它大于平均值,输出该数与平均值的差;如果不大于或等于平均值,输出0?
时间: 2024-11-04 17:14:04 浏览: 21
C语言将数组中元素的数排序输出的相关问题解决
在C语言中,你可以按照以下步骤编写程序来实现这两个功能:
1. 定义函数`calculate_average()`来计算非零数字的平均值。首先初始化总和和计数器为0,然后遍历数组,只对非零元素做累加并增加计数。最后返回总和除以计数得到的平均值。
```c
double calculate_average(int arr[], int size) {
double sum = 0;
int count = 0;
for (int i = 0; i < size; i++) {
if (arr[i] != 0) {
sum += arr[i];
count++;
}
}
return count > 0 ? sum / count : 0; // 防止除以0的情况
}
```
2. 定义另一个函数`process_array()`,在这个函数中先调用上面的`calculate_average()`函数获取平均值,然后遍历数组,根据条件判断是否输出数字和平均值的差或0。
```c
void process_array(int arr[], int size) {
double average = calculate_average(arr, size);
for (int i = 0; i < size; i++) {
if (arr[i] != 0 && arr[i] > average) {
printf("%d - %.2f = %lf\n", arr[i], average, arr[i] - average);
} else {
printf("0\n"); // 如果不大于或等于平均值,则输出0
}
}
}
```
将这两个函数整合在一起,并添加主函数`main()`来接收数组和大小作为输入:
```c
#include <stdio.h>
// ... (上述两个函数定义)
int main() {
int arr[] = {5, 2, 0, 8, 6, 0, 10}; // 示例数组
int size = sizeof(arr) / sizeof(arr[0]);
process_array(arr, size);
return 0;
}
```
阅读全文