C语言输入一组数,将其排序并求总体标准差,平均数,中位数,总体方差,样本方差,样本标准差,最后输出
时间: 2023-08-06 14:05:43 浏览: 102
C语言用自己输入的数组求平均数
5星 · 资源好评率100%
下面是一个简单的 C 语言程序,可以实现你需要的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_SIZE 100
void sort(float arr[], int n) {
int i, j;
float temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[i]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
float mean(float arr[], int n) {
int i;
float sum = 0.0;
for (i = 0; i < n; i++) {
sum += arr[i];
}
return sum / n;
}
float median(float arr[], int n) {
if (n % 2 == 0) {
return (arr[n/2 - 1] + arr[n/2]) / 2.0;
} else {
return arr[n/2];
}
}
float variance(float arr[], int n) {
int i;
float sum = 0.0, avg = mean(arr, n);
for (i = 0; i < n; i++) {
sum += pow(arr[i] - avg, 2);
}
return sum / n;
}
float std_dev(float arr[], int n) {
return sqrt(variance(arr, n));
}
int main() {
float arr[MAX_SIZE];
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter the elements:\n");
for (i = 0; i < n; i++) {
scanf("%f", &arr[i]);
}
sort(arr, n);
printf("Sorted array: ");
for (i = 0; i < n; i++) {
printf("%.2f ", arr[i]);
}
printf("\nMean: %.2f\n", mean(arr, n));
printf("Median: %.2f\n", median(arr, n));
printf("Population variance: %.2f\n", variance(arr, n));
printf("Sample variance: %.2f\n", variance(arr, n - 1));
printf("Population standard deviation: %.2f\n", std_dev(arr, n));
printf("Sample standard deviation: %.2f\n", std_dev(arr, n - 1));
return 0;
}
```
这个程序首先让用户输入元素的个数和数组,然后使用选择排序算法对数组进行排序。接下来,它计算了平均值、中位数、总体方差、样本方差和总体标准差,并将它们打印出来。
注意,这个程序默认输入的是一组数据样本(即已知总体的情况下),如果你需要计算总体方差和总体标准差,应该将样本方差和样本标准差的分母改为 n(即元素个数)。
阅读全文