题目描述
给出一个圆的圆心坐标与圆的半径,和一条直线上的两点坐标,求这条直线与圆有多少个交点。 输入
输入3个实数x,y,r值分别表示圆心坐标与圆的半径,输入4个实数x1,y1,x2,y2表示直线上的两点。多实例,输入到文件尾结束。 输出
输出直线与圆的交点个数。 样例输入
复制 样例输出
复制

代码:需要特殊考虑斜率不存在 的情况,其他情况一样,按照之前学的圆与直线的交点来写,与半径r比较的时候需要考虑精度。

 #include<stdio.h>
#include<math.h>
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
double x,y,r,x1,y1,x2,y2;
double k,b,d;
while(scanf("%lf %lf %lf %lf %lf %lf %lf",&x,&y,&r,&x1,&y1,&x2,&y2)!=EOF)
{
if(fabs(x2-x1)<1e-)//斜率不存在
d=fabs(x-x1);
else
{
k=(y2-y1)/(x2-x1);
b=y1-k*x1;
d=fabs(k*x-y+b)/sqrt(k*k+);
}
if(fabs(d-r)<1e-)
printf("1\n");
else if(d<r)
printf("2\n");
else
printf("0\n");
}
return ;
}

最新文章

  1. native2ascii.exe 字符转码与反转码
  2. 温故而知新,jquery选择器$=
  3. disconnected no supported authentication methods available(server sent: publickey,keyboard interae)
  4. mongoose学习文档
  5. 使用 Express 和 waterline 创建简单 Restful API
  6. STM32外部中断.
  7. PHP开发调优clockwork工具
  8. jquery图片轮播-插件
  9. 获取Enum的扩张方法。
  10. 【Java每日一题】20170109
  11. 重拾Python(2):如何安装第三方库(Windows)
  12. (ospf、rip、isis、EIGRP)常见的动态路由协议简介
  13. Linux C启动时创建pid文件
  14. 【汇编语言】DOXBox 0.74 常用debug命令
  15. Gradle 打包上传至私有仓库配置
  16. 统计iis日志第一例的次数
  17. Linux vi 编辑器常见命令的使用
  18. 利用python抓取页面数据
  19. leetcode — anagrams
  20. Netty实战 - 1. 基本概念

热门文章

  1. Spring Boot 小技巧
  2. python 模块 不可不知的知识点
  3. Document.write和 InnerHTML
  4. HTML5-2
  5. crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问
  6. Python内存释放
  7. Java Spring 在线程中或其他位置获取 ApplicationContext 或 ServiceBean
  8. ubuntu16.04 登陆不进桌面
  9. SQL-59 按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。
  10. CPU-bound(计算密集型) 和I/O bound(I/O密集型) 区别 与应用