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

该博客介绍了如何使用C语言解决《谭浩强C程序设计》中的一道题目,即根据4个圆塔的坐标和半径,计算输入任意一点的建筑高度。解题思路是通过计算输入点到圆心的距离,如果距离小于等于半径,则高度为10米,否则为0。提供的代码示例展示了如何实现这一功能,并给出了输入20时输出为0的执行结果。
摘要由CSDN通过智能技术生成

题目

本题是《谭浩强c程序设计》4.12题。
题目:
有4个圆塔, 圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2), 圆半径为1, 见图。这4个塔的高度为10m,
塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
请添加图片描述


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj

一、解题思路

思路:
先输入一个坐标,对这个坐标的行和列取绝对值,然后代入公式计算点到圆心的距离,当距离大于半径时,高度为0,当距离小于半径时,高度为10m。

二、代码部分

1.引入库

代码如下(示例):

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

2.主函数部分

代码如下(示例):

int main()
{
	//在圆内:高度10,不在圆内:高度0;
	int r = 1;
	printf("请输入任意一点的坐标:");
	int a, b;
	int x, y;
	float c;
	scanf("%d %d", &a, &b);
	x = fabs(a);
	y = fabs(b);//先将a和b的坐标取绝对值
	c = sqrt((x - 2) * (x - 2) + (y - 2) * (y - x));//sqrt是求平方根公式,c是求点到圆心的距离为多少,公式为根号下x1-x2的平方+y1-y2的平方
	if (c > r)
		printf("0");//当求出的点到圆心的距离大于半径,说明不在圆塔上,高度为0
	else
		printf("10");//当求出的点到圆心的距离小于等于半径,说明在圆塔上,高度为10
	return 0;
}

三、执行结果

在这里插入图片描述

输入:

请输入任意一点的坐标:2 0

输出:

0
  • 15
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 可以使用勾股定理和条件语句来解决这个问。 首先,输入一点坐标,我们可以使用 Python 的 input() 函数来实现: ```python x = float(input("请输入的 x 坐标:")) y = float(input("请输入的 y 坐标:")) ``` 接着,我们需要判断该是否在四个圆塔的范围内。如果在范围内,该建筑高度10m,否则为 0m。 判断该是否在第一个圆塔的范围内,可以使用勾股定理计算该与第一个圆塔圆心的距离,如果小于等于半径 1,则该在第一个圆塔的范围内: ```python distance = ((x-2)**2 + (y-2)**2)**0.5 if distance <= 1: height = 10 else: height = 0 ``` 同样的,我们可以使用类似的方法判断该是否在其他三个圆塔的范围内。最终,可以输出该建筑高度: ```python print("该建筑高度为:", height, "m") ``` 完整代码如下: ```python x = float(input("请输入的 x 坐标:")) y = float(input("请输入的 y 坐标:")) distance = ((x-2)**2 + (y-2)**2)**0.5 if distance <= 1: height = 10 else: distance = ((x+2)**2 + (y-2)**2)**0.5 if distance <= 1: height = 10 else: distance = ((x-2)**2 + (y+2)**2)**0.5 if distance <= 1: height = 10 else: distance = ((x+2)**2 + (y+2)**2)**0.5 if distance <= 1: height = 10 else: height = 0 print("该建筑高度为:", height, "m") ``` ### 回答2: 首先,我们可以通过计算输入与四个圆塔之间的距离来确定该是否在圆塔内部。如果该圆塔内部,则该建筑高度10m;如果该圆塔外部,则该建筑高度为0m。 下面是一个Python程序示例,根据输入坐标计算建筑高度: ```python import math # 四个圆塔圆心坐标半径 towers = [(2, 2), (-2, 2), (2, -2), (-2, -2)] radius = 1 def calculate_height(x, y): height = 0 # 遍历四个圆塔 for tower in towers: # 计算输入圆塔圆心之间的距离 distance = math.sqrt((x - tower[0])**2 + (y - tower[1])**2) # 如果距离小于圆塔半径,则圆塔内部,建筑高度10m if distance < radius: height = 10 break return height # 输入坐标 x = float(input('请输入的x坐标:')) y = float(input('请输入的y坐标:')) # 计算建筑高度 height = calculate_height(x, y) print('该建筑高度为', height, 'm') ``` 在以上示例中,我们通过`calculate_height`函数来计算建筑高度。该函数遍历四个圆塔,计算输入圆塔圆心之间的距离,如果距离小于圆塔半径,则圆塔内部,建筑高度10m。 然后,我们通过输入坐标进行测试,程序会计算出相应的建筑高度并输出。例如,如果输入坐标为(0, 0),则该建筑高度为0m;如果输入坐标为(2.5, 2.5),则该建筑高度10m。 ### 回答3: 要解决这个问,我们可以按照以下步骤编写程序: 1. 首先,用户输入任意坐标,我们将其保存为一个变量。 2. 接下来,我们将逐个检查四个圆塔是否包含该。对于每个圆塔,我们可以使用圆心的距离公式来判断是否在圆塔内部。 3. 如果找到一个圆塔包含该,我们将该圆塔高度(即10m)赋给一个变量。 4. 对于其他三个圆塔,如果它们包含了该,我们可以利用之前找到的圆塔高度变量,将其赋值为0。 5. 最后,我们输出该建筑高度。 下面是一个使用Python编写的示例程序: ```python import math x, y = map(int, input("请输入坐标(以空格分隔):").split()) height = 0 # 建筑高度,默认为0 # 检查第一个圆塔 distance = math.sqrt((x - 2) ** 2 + (y - 2) ** 2) if distance <= 1: # 在圆塔内部 height = 10 # 检查其他三个圆塔 distance = math.sqrt((x + 2) ** 2 + (y - 2) ** 2) if distance <= 1 and height != 10: height = 0 distance = math.sqrt((x - 2) ** 2 + (y + 2) ** 2) if distance <= 1 and height != 10: height = 0 distance = math.sqrt((x + 2) ** 2 + (y + 2) ** 2) if distance <= 1 and height != 10: height = 0 print("该建筑高度为:" + str(height) + "m") ``` 这个程序将用户输入与四个圆塔进行比较,并输出建筑高度。如果该在任何圆塔内部,则输出为10m;否则为0m。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志冲海大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值