C语言实现将1024个浮点数变成100个浮点数
时间: 2024-05-08 18:16:02 浏览: 41
方法一:取平均值
将1024个浮点数分成100组,每组包含10个数,对每组求平均值,得到100个浮点数。
具体实现如下:
```c
#include <stdio.h>
#define SIZE 1024
#define GROUP_SIZE 10
#define RESULT_SIZE 100
int main() {
float nums[SIZE];
float result[RESULT_SIZE];
int i, j;
// 生成1024个随机数
for (i = 0; i < SIZE; i++) {
nums[i] = (float) rand() / RAND_MAX;
}
// 对每组求平均值
for (i = 0; i < RESULT_SIZE; i++) {
float sum = 0;
for (j = 0; j < GROUP_SIZE; j++) {
sum += nums[i * GROUP_SIZE + j];
}
result[i] = sum / GROUP_SIZE;
}
// 输出结果
for (i = 0; i < RESULT_SIZE; i++) {
printf("%f ", result[i]);
}
printf("\n");
return 0;
}
```
方法二:取中位数
将1024个浮点数分成100组,每组包含10个数,对每组进行排序,取其中位数作为该组的代表值,得到100个浮点数。
具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 1024
#define GROUP_SIZE 10
#define RESULT_SIZE 100
int cmpFloat(const void *a, const void *b) {
float fa = *(float*) a;
float fb = *(float*) b;
return (fa > fb) - (fa < fb);
}
int main() {
float nums[SIZE];
float result[RESULT_SIZE];
int i, j;
// 生成1024个随机数
for (i = 0; i < SIZE; i++) {
nums[i] = (float) rand() / RAND_MAX;
}
// 对每组进行排序,取其中位数
for (i = 0; i < RESULT_SIZE; i++) {
float group[GROUP_SIZE];
for (j = 0; j < GROUP_SIZE; j++) {
group[j] = nums[i * GROUP_SIZE + j];
}
qsort(group, GROUP_SIZE, sizeof(float), cmpFloat);
result[i] = group[GROUP_SIZE / 2];
}
// 输出结果
for (i = 0; i < RESULT_SIZE; i++) {
printf("%f ", result[i]);
}
printf("\n");
return 0;
}
```
阅读全文