一,基础篇
案例1—1
《点到直线的距离》
已知直线L的方程是 Ax+By+C=0 ,点P的坐标是(x,y) ,求点P到直线L的距离。点到直线的距离公式为:
要求先输入A,B,C三个参数,确定直线L;然后再输入x和y,确定点P;最后根据点到直线的距离公式,计算点到直线的距离。
#include<stdio.h>
#include<math.h>
int main() {
double A, B, C;//直线的参数
double x, y;//点坐标
double d;//点到直线的距离
puts("请输入直线的方程Ax+By+C=0");//puts用于简单的输出字符串,自动换行。但功能小于printf
puts("A="); scanf_s("%lf", &A);//scanf_s和scanf一样(微软编译器大多用前者
puts("B="); scanf_s("%lf", &B);
puts("C="); scanf_s("%lf", &C);
//printf("所输入的方程是(%lf)x+(%lf)y+(%lf)=0\n", A, B, C);一级
//printf("所输入的方程是(%.lf)x+(%.lf)y+(%.lf)=0\n", A, B, C);二级
printf("所输入的方程是%.lfx%+.lfy%+.lf=0\n", A, B, C);//三级 知识点!
/* 首先“断句”
%.lf x %+.lf y %+.lf = 0
'.'是精度修饰符,这里省略不必要的零
'+'是符号修饰符,用于在输出正数时也显示符号 即避免出现’+-‘连用的情况
拓展
'-'用于左对齐输出。因为默认是右对齐的
如 “%5d”和“%-5d”
*/
puts("请再输入点的坐标,依次输入 x(回车)y");
scanf_s("%lf%lf", &x, &y);
printf("所输入的点坐标是(%lf,%lf)\n", x, y);
d = fabs(A * x + B * y + C) / sqrt(pow(A, 2) + pow(B, 2));
//fabs 绝对值;sprt 根号;pow(,n) n次方
printf("点到直线的距离是%lf", d);
return 0;
}