#include <iostream>
#include <iomanip> // 用于设置小数输出精度
#include <cmath> // 用于 pow() 函数
using namespace std;
int main() {
int T;
cin>>T;
int num1[100];
double num2[100];
for (int i=0; i<T; i++) {
int n;
cin>>n;
int* a = new int[n]; // 动态分配数组,防止爆栈,10的9次方wok
int max_n=-1e9;// 初始最大值设为最小可能
int min_n=1e9;
long long sum = 0; // 用 long long 防止溢出
for(int j=0;j<n;j++){
cin>>a[j];
if (max_n<a[j]) max_n=a[j];
if (min_n>a[j]) min_n=a[j];
sum+=a[j];
}
int res1=max_n-min_n;
double avg=(double)sum/n;//均值
// 计算方差
double res2 = 0;
for (int i = 0; i < n; i++) {
res2 += (a[i] - avg) * (a[i] - avg);
/*💡补充:为何不推荐用 pow(x, 2) 来求平方?
因为:
pow() 是一个通用的浮点幂函数,相对效率较低;
(x) * (x) 是最直接、最快速、最精确的方式;
特别是在整数或小数平方时,避免使用 pow() 更高效更安全。
*/
}
res2 /= n;
num1[i]=res1;
num2[i]=res2;
delete[] a; // 释放内存
}
for (int i=0; i<T; i++) {
// 输出:极差是整数,方差保留3位小数
cout << num1[i] << " "
<< fixed << setprecision(3) << num2[i] << endl;
/*fixed:固定小数位数格式输出;
setprecision(n):设置保留 n 位小数;*/
}
return 0;
}
补充
| 引入控制输出精度的库 |
| 使用小数点后固定位数输出 |
| 设置保留小数点后 n 位 |
| 科学计数法输出(可选) |
| 即使为整数也显示小数点(可选) |
| 设置字段宽度(仅对下一个输出有效) |
| 设置填充字符 |
| 左对齐 |
| 右对齐(默认) |
| 数字符号左对齐,数值右对齐 |
| 小数点后固定位数输出 |
| 设置小数点后的位数或总有效位 |

京公网安备 11010502036488号