【C语言基础练习】

**

C语言基础练习

**

一·C语言基础练习
1.题目:有四个圆塔,圆心分别为(2,2)(2,-2)(-2,-2)(2,-2)
半径为1,塔高10,现在输入一个点的坐标,若该点在塔内,则返回塔高,否则返回0。

分析:这里出现两种情况(1.在圆内,2.在圆外),所以解题的关键就出来了——用if语句。知道了用什么语句,再分析,该如何判断这个是否在圆内,两点距离是个不错的选择,可是要开方,这就难到许多新手了,不过换一下思考,如果半径与距离都平方,不就可以直接比较了吗?
所以,我们直接算的是距离的平方(即不开方),这样再去判断与半径的关系就轻松多了。

if 里面该怎么写,有两种写法,因为有四个圆,这个点到四个圆的圆心距离不一样,但是可以知道的是,只要有一个圆心距离小于半径,就可以说明问题了。所以直接就是说——四者满足一者就能成立。——也就是说用“或”。

直接看代码。

if(d1<1||d2<1||d3<1||d4<1)

当然用“与”也是一样的,怎么分析呢,反向思维,不在外面区域就在圆内,所以,只要满足这四个圆心距离都大于1,就说明点一定在圆内(至于哪个圆,题目没要求,那我们也不管)

看代码

if(d1>1&&d2>1&&d3>1&&d4>1)

方法一


#include <stdio.h>
main()
{
	int h=10;
	float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2;
	float x,y,d1,d2,d3,d4;
	printf(" 请输入坐标\n\n");
	scanf("%f,%f",&x,&y);
	d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
	d2=(x-x2)*(x-x2)+(y-y2)*(y-y2);
	d3=(x-x3)*(x-x3)+(y-y3)*(y-y3);
	d4=(x-x4)*(x-x4)+(y-y4)*(y-y4);
	if(d1>1&&d2>1&&d3>1&&d4>1)
	{
		h=0;
		printf("h=%d,该点不在塔内",h);
	}
	else
		printf("%d",h);
}

还有一种方法,用数学函数,下期继续

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

通信好难学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值