1.正方形的中心点和圆的圆心重合

2.最短距离分为三中情况

  第一种情况:圆的直径小于正方形的边长,此时最短距离t=(a-2*r)/2.0;
  第二中情况:圆的直径大于等于正方形的边长,并且圆的直径小于等于正方形的对角线,
             此情况下,圆始终和正方形相交,最短距离为0.
  第三种情况:圆的直径大于正方形的对角线,最短距离为:(圆的直径 - 正方形对角线)/2
#include <iostream>
using namespace std;
#include <math.h>
int main()
{
    double a,r;
    cin>>a>>r;
    if(a-2*r>=1e-3) {
        double t=(a-2*r)/2.0;
        printf("%.3lf",t);
    }
    else if(sqrt(2)*a-2*r>=1e-3) {
        printf("%.3lf",0);
    }
    else if(sqrt(2)*a-2*r<1e-3) {
        double t=(2*r-sqrt(2)*a)/2;
        printf("%.3lf",t);
    } 
    return 0;
}