C语言选择结构程序设计

描述

有一个数轴,在该数轴的四个区域中各有一个圆,如果一个点在圆的区域中,就表示它有数值,如果不在该圆区域中就没有数值。(谭浩强 C 语言 第三版 112 页第 5.10 题)

题目

有 4 个 圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为 1,见下图。这 4 个塔的高度为 10 ,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。

12_数轴题目.png

题目解题思路

本题主要是求任意一个点到各个圆心之间的距离,如果距离小于 1,那么就表示落在这个圆心里面。在计算两个点距离的时候可以通过三角形勾股定理进行计算,因为圆的半径是 1,1 的平方还是 1,所以就可以用点的两个坐标轴相减的平方和 1 比较就可以了。

具体代码实现

#include <stdio.h> void main() { printf("嗨客网(www.haicoder.net)\n\n"); int h = 10; //最终的高度 float x,y,d1,d2,d3,d4; printf("请输入一个点 (x,y):"); scanf("%f,%f",&x,&y); d1 = (x - 2)*(x -2) + (y-2) * (y -2); d2 = (x - 2)*(x -2) + (y-(-1)) * (y -(-2)); d3 = (x - (-2))*(x -(-2)) + (y-2) * (y -2); d4 = (x - (-2))*(x -(-2)) + (y-(-2)) * (y -(-2)); if (d1 > 1 && d2 > 1 && d3 > 1 && d4 > 1) { h = 0; } printf("该点高度为 %d \n",h); }

运行结果如下:

13_数轴.png

我们输入了 2,2 ,计算结果为 10,现在我们输入 04,0.8,运行结果如下:

14_数轴.png

此时,最终输出了高度为 0。

总结

这个题目主要是让做题者理清随便给出的坐标点是不是在这个四个圆中,从而就变成了这个点离四个圆的圆心的距离是不是小于 1,如果小于 1 表示在圆中。