#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;
}

补充

#include <iomanip>

引入控制输出精度的库

fixed

使用小数点后固定位数输出

setprecision(n)

设置保留小数点后 n 位

scientific

科学计数法输出(可选)

showpoint

即使为整数也显示小数点(可选)

setw(n)

设置字段宽度(仅对下一个输出有效)

setfill(c)

设置填充字符

left

左对齐

right

右对齐(默认)

internal

数字符号左对齐,数值右对齐

fixed

小数点后固定位数输出

setprecision(n)

设置小数点后的位数或总有效位