View Code of Problem 106

#include <stdio.h>
#include <math.h>


int main()
{ 
        float x1, x2, y1, y2, r, d, S;
        while(scanf("%f%f%f%f%f", &x1, &x2, &y1, &y2, &r) != EOF)
        {
                d = sqrt((x1 - x2) * (x1 - x2)  + (y1 - y2) * (y1 - y2));
                if(d > 2 * r)
                {
                    printf("相离\n");
				}else if(d == 2 * r)
				{
					printf("相切\n");
				}else if(x1 == x2 && y1 == y2)
				{
					printf("重合\n");
				}else
				{
					S = 2 * (acos(d / 2 / r) * r * r - sqrt(r * r - (d / 2) * (d / 2)) * d / 2);
					printf("相交 %.2f\n", S);
				}
		}
		return 0;
}

Double click to view unformatted code.


Back to problem 106