#ASC202624. 传感器标定助手
传感器标定助手
题目描述
石宇浩学长正在给智能车的模拟传感器做零点标定。传感器连续采集了 n 个原始读数,但由于安装误差,这些读数带有一个固定的零点偏移。
学长决定把所有读数中的最小值当作零点偏移。对于每个原始读数 raw[i],标定后的读数为:
calibrated[i] = raw[i] - min_value
请统计原始读数的最小值、最大值和平均值,并输出全部标定后的读数。
为了练习 C 语言的函数与指针,建议在程序中实现以下三个函数:
void find_range(const int a[], int n, int *min_value, int *max_value);
double average(const int a[], int n);
void calibrate(int a[], int n, int offset);
其中,min_value 和 max_value 是指针输出参数:函数通过它们把最小值和最大值返回给调用者。
输入格式
第一行输入一个整数 n,表示传感器读数的数量。
第二行输入 n 个整数 a[1], a[2], ..., a[n],表示原始读数。
输出格式
第一行输出两个整数,依次为原始读数的最小值和最大值。
第二行输出原始读数的平均值,保留两位小数。
第三行输出 n 个整数,表示标定后的读数,相邻整数之间用一个空格分隔,行末不要输出多余空格。
样例
5
1023 1018 1025 1020 1018
1018 1025
1020.80
5 0 7 2 0
样例说明
原始读数的最小值为 1018,最大值为 1025,平均值为 1020.80。
所有读数减去最小值 1018 后,得到标定结果 5 0 7 2 0。
数据范围与限制
1 <= n <= 1000-100000 <= a[i] <= 100000- 输入保证平均值的绝对误差不会受到浮点精度问题影响。
相关
在下列比赛中: