单片机c51求平均值,要求如下:1、随机生成N个整数 2、去掉最大、最小值,求取平均值 3、显示原始数据和平均值,平均值带2个小数点
时间: 2023-07-16 09:11:53 浏览: 331
随机生成5个不大于100的整数,并求平均值
以下是基于C51的代码实现:
```c
#include <reg51.h>
#include <stdio.h>
#include <stdlib.h>
#define N 10 // 生成的随机数个数
#define MAX 100 // 随机数最大值
#define MIN 1 // 随机数最小值
int rand_num[N]; // 存放随机数的数组
void generate_random() // 生成随机数函数
{
int i;
for (i = 0; i < N; i++) {
rand_num[i] = rand() % (MAX - MIN + 1) + MIN;
}
}
void sort() // 排序函数
{
int i, j, temp;
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - i - 1; j++) {
if (rand_num[j] > rand_num[j + 1]) {
temp = rand_num[j];
rand_num[j] = rand_num[j + 1];
rand_num[j + 1] = temp;
}
}
}
}
void main()
{
int i, sum = 0, max, min;
float avg;
generate_random(); // 生成随机数
sort(); // 排序
max = rand_num[N - 1]; // 取最大值
min = rand_num[0]; // 取最小值
for (i = 1; i < N - 1; i++) { // 求和
sum += rand_num[i];
}
avg = (float)sum / (N - 2); // 求平均值
// 显示原始数据和平均值
printf("原始数据:");
for (i = 0; i < N; i++) {
printf("%d ", rand_num[i]);
}
printf("\n");
printf("平均值:%.2f\n", avg);
}
```
代码中使用了rand()函数生成随机数,需要在程序开头添加`srand()`函数进行初始化。同时,为了方便显示,使用了stdio.h库中的printf函数进行输出。
阅读全文