Go: package main

import (
	"fmt"
	"math"
)

func main() {
	var num int
	fmt.Scan(&num)
	for i := 0; i < num; i++ {
		var x1, y1, x2, y2, x3, y3 float64
		fmt.Scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3)

		a := 2 * (x2 - x1)
		b := 2 * (y2 - y1)
		c := 2 * (x3 - x1)
		d := 2 * (y3 - y1)
		e := x2*x2 - x1*x1 + y2*y2 - y1*y1
		f := x3*x3 - x1*x1 + y3*y3 - y1*y1

		// 直線1: ax + by - e = 0
		// 直線2: cx + dy - f = 0
		px := (d*e - b*f) / (a*d - b*c)
		py := (c*e - a*f) / (b*c - a*d)
		r := math.Sqrt((px-x1)*(px-x1) + (py-y1)*(py-y1))
		fmt.Printf("%.3f %.3f %.3f\n", px, py, r)
	}
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;

#define FOR(i,a,b) for(long long int i=(a);i<(b);i++)
#define REP(i,n) for(long long int i=0;i<(n);i++)
#define ALL(s) (s).begin(),(s).end()

#define PI 3.14159265358479

typedef long long int ll;
typedef vector<long long int> vi;
typedef vector<long long int>::iterator vit;

void se(double a, double b, double c, double d, double e, double f,double *x,double *y){
	if (a < 0){
		a = -a;
		b = -b;
		c = -c;
	}
	if (b == -0)b = 0;
	if (d < 0){
		d = -d;
		e = -e;
		f = -f;
	}
	cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << "\n";
	if (a == 0){
		*y = c / b;
		*x = (f - e*(*y)) / d;
	}
	else if (b == 0){
		*x = c / a;
		*y = (f - e*(*x)) / d;
	}
	if (d == 0){
		*y = f / e;
		*x = (c - b*(*y)) / a;
	}
	else if (e == 0){
		*x = f / d;
		*y = (c - a*(*x)) / b;
	}
	else if (a != 0 && b != 0 && d != 0 && e != 0){
		*x = (b*f - c*e) / (b*d - a*e);
		*y = (c*d - a*f) / (b*d - a*e);
	}
}


int main(){
	double x1, y1, x2, y2, x3, y3, px, py, r;
	ll n;
	cin >> n;
	REP(i,n){
		cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
		se(2.0*(x1 - x2), 2.0*(y1 - y2),
			pow(x1, 2.0) + pow(y1, 2.0) - pow(x2, 2.0) - pow(y2, 2.0),
			2.0*(x2 - x3), 2.0*(y2 - y3),
			pow(x2, 2.0) + pow(y2, 2.0) - pow(x3, 2.0) - pow(y3, 2.0), &px, &py);
		r = pow(pow(x1 - px, 2.0) + pow(y1 - py, 2.0), 0.5);

		printf("%.3lf %.3lf %.3lf\n", px, py, r);
	}
}

C++: #include <iostream>
#include <math.h>
#include <algorithm>
#include <string>
#include <stdio.h>
using namespace std;
int main(){
    int n;
    cin >> n;
    for(int i=0;i<n;i++){
    double x1,y1,x2,y2,x3,y3;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
    double x,y,r;
    double a,b,c,d,e,f;
    a=2*x1-2*x2;
    b=2*y1-2*y2;
    c=x1*x1-x2*x2+y1*y1-y2*y2;
    d=2*x2-2*x3;
    e=2*y2-2*y3;
    f=x2*x2-x3*x3+y2*y2-y3*y3;
        x=(b*f-e*c)/(a*e-d*b);
        y=(c*d-f*a)/(a*e-d*b);
        
   r=hypot(x-x1,y-y1);
    
    printf("%.3lf %.3lf %.3lf\n",x,y,r);
   }
}

C++: #define _USE_MATH_DEFINES

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <utility>
#include <vector>
#include <numeric>

using namespace std;

double distance(double x0, double y0, double x1, double y1)
{
	double x = x1 - x0;
	double y = y1 - y0;

	return sqrt(x * x + y * y);
}

int main()
{
	int n;
	for (cin >> n; n--;)
	{
		vector<double> x(3);
		vector<double> y(3);

		for (int i = 0; i < 3; i++)
		{
			cin >> x.at(i) >> y.at(i);
		}

		double a = distance(x.at(1), y.at(1), x.at(2), y.at(2));
		double b = distance(x.at(2), y.at(2), x.at(0), y.at(0));
		double c = distance(x.at(0), y.at(0), x.at(1), y.at(1));


		double cosA = (b * b + c * c - a * a) / (2 * b * c);
		double sinA = sqrt(1 - cosA * cosA);
		double r = a / (2 * sinA);

		double px = x.at(0) - r * cosA;
		double py = y.at(0) - r * sinA;

		cout << fixed << setprecision(3);
		cout << px << " " << py << " " << r << endl;
	}
}

C++: #include <cmath>
#include <iostream>
#include <iomanip>

struct TPoint
{
    double x;
    double y;
};
struct TTriangle
{
    TPoint p1;
    TPoint p2;
    TPoint p3;
};
void SolveEquation(double a, double b, double c, double d, double e, double f, double* x, double* y)
{

    if(b){
        *x = (c * e - b * f) / (a * e - b * d);
        *y = (c - a * *x) / b;
    }else{
        *y = (f - d * c / a)/( e - d * b / a);
        *x = (c - b * *y) / a;
    }
}
/*
A(a, b) B(c, d) C(e, f)
(OA)^2 = (OB)^2
(OA)^2 = (OC)^2
x2-2ax+a2 + y2-2by+b2 = x2-2cx+c2 + y2-2dy+d2
(2c-2a)x + (2d-2b)y = c^2 + d^2 - a^2 - b^2;

x2-2ax+a2 + y2-2by+b2 = x2-2ex+e2 + y2-2fy+f2
(2e-2a)x + (2f-2b)y = e^2 + f^2 - a^2 - d^2
*/
TPoint GetCentral(const TTriangle& Tri)
{
    double a, b, c, d, e, f;
    a = 2 * (Tri.p2.x - Tri.p1.x);
    b = 2 * (Tri.p2.y - Tri.p1.y);
    c = std::pow(Tri.p2.x,2) + std::pow(Tri.p2.y,2) - std::pow(Tri.p1.x,2) - std::pow(Tri.p1.y,2);
    d = 2 * (Tri.p3.x - Tri.p1.x);
    e = 2 * (Tri.p3.y - Tri.p1.y);
    f = std::pow(Tri.p3.x,2) + std::pow(Tri.p3.y,2) - std::pow(Tri.p1.x,2) - std::pow(Tri.p1.y,2);
    TPoint P;
    SolveEquation(a, b, c, d, e, f, &P.x, &P.y);
    return P;
}
double GetLength(const TPoint& A, const TPoint& B)
{
    return std::sqrt(std::pow(A.x - B.x, 2) + std::pow(A.y - B.y, 2));
    // return std::sqrt((A.x - B.x)*(A.x - B.x) + (A.y - B.y)*(A.y - B.y));
}
double GetRadius(double a, double b, double c)
{
    return (a*b*c)/std::sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c));
}
double GetRadius(const TTriangle& Tri)
{
    double a = GetLength(Tri.p1, Tri.p2);
    double b = GetLength(Tri.p2, Tri.p3);
    double c = GetLength(Tri.p3, Tri.p1);
    return GetRadius(a, b, c);
}
int main()
{
    int n;
    std::cin >> n;
    for(int i = 0; i < n; ++i){
        // double a, b, c;
        // std::cin >> a >> b >> c;
        // std::cout << GetRadius(a, b, c) << std::endl;
        
        TTriangle tri;
        std::cin >> tri.p1.x >> tri.p1.y >> tri.p2.x >> tri.p2.y >> tri.p3.x >> tri.p3.y;
        TPoint C = GetCentral(tri);
        double r = GetRadius(tri);
        if(C.x == -0) C.x = 0;
        if(C.y == -0) C.y = 0;
        if(r   == -0) r   = 0;
        std::cout << std::fixed << std::setprecision(3);
        std::cout << C.x << " " << C.y << " " << r << std::endl;
    }
    return 0;
}

C++: #include<stdio.h>
#include<math.h>
double x1, y1, x2, y2, x3, y3;
double px, py;
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
        double A1 =(x2*x2+y2*y2-x1*x1-y1*y1)*(y3-y1);
        double B1 =(x3*x3+y3*y3-x1*x1-y1*y1)*(y2-y1);
        double A2 =(x3*x3+y3*y3-x1*x1-y1*y1)*(x2-x1);
        double B2 =(x2*x2+y2*y2-x1*x1-y1*y1)*(x3-x1);
        double D = (x2-x1)*(y3-y1)-(y2-y1)*(x3-x1);
        double X=(A1-B1)/D/2;
        double Y=(A2-B2)/D/2;
        double R = sqrt((X-x1)*(X-x1)+(Y-y1)*(Y-y1));
        printf("%.3f %.3f %.3f\n",X,Y,R);
    }
    return 0;
}

C++: #include <stdio.h>
#include <complex>

using namespace std;

typedef complex<double> point;
#define X real()
#define Y imag()
typedef point vec;

double cross(vec a, vec b)
{ return a.X * b.Y - b.X * a.Y; }

double dis(point a, point b)
{ return abs(a - b); }

point center(point A, point B, point C) // Circumcenter
{
	B -= A; C -= A;
	double b = norm(B), c = norm(C), d = 2 * cross(B, C);
	return A + point(C.Y * b - B.Y * c, B.X * c - C.X * b) / d;
}

int main()
{
	int dat;
	scanf("%d", &dat);
	while (dat--) {
		point p[3], c;
		for (int i = 0; i < 3; ++i) {
			double x, y;
			scanf("%lf%lf", &x, &y);
			p[i] = point(x, y);
		}
		c = center(p[0], p[1], p[2]);
		printf("%.3lf %.3lf %.3lf\n", c.X, c.Y, dis(c, p[0]));
	}
}