写这段题目代码 C语言题目: 求一些数的平均数(数据总数少于1000个)。计算时只统计有效数据(数值<=10000)。数值大于10000的数据是噪声数据,不应统计在平均数内。读到-1表示数据结束。平均数保留三位小数输出。如果没有读取到任何有效数据,则输出“no data”。
时间: 2024-10-11 22:03:41 浏览: 34
你可以使用C语言编写如下的代码来解决这个问题:
```c
#include <stdio.h>
#include <stdlib.h>
double calculate_average(int arr[], int n) {
double sum = 0;
int valid_count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] <= 10000 && arr[i] != -1) {
sum += arr[i];
valid_count++;
}
}
// 如果没有有效数据,返回"no data"
if (valid_count == 0) {
printf("no data\n");
return 0;
} else {
double average = sum / valid_count;
return round(average * 1000) / 1000.0; // 保留三位小数
}
}
int main() {
int data[1000]; // 假设最多有1000个数
int num_data = 0;
while (true) {
scanf("%d", &data[num_data]);
if (data[num_data] == -1) break; // 遇到-1表示数据结束
num_data++;
}
double avg = calculate_average(data, num_data);
printf("%.3f\n", avg);
return 0;
}
```
这段代码首先定义了一个函数`calculate_average`,它接收一个整型数组和它的长度作为输入,遍历数组,统计有效数据(数值小于等于10000且非-1)并计算它们的总和。然后在主函数`main`中,我们创建一个大小为1000的数组,并通过循环不断读取用户输入,直到遇到-1为止。最后,调用`calculate_average`函数并打印出平均数(保留三位小数)。如果在遍历过程中没有找到有效数据,函数会直接返回"No data"。
阅读全文