|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
抽成函数怎么就出问题了?
#include<stdio.h>
void main()
{
//第一条直线
double x1 = 0, y1 = 0, x2 = 100, y2 = 100;
double a = (y1 - y2) / (x1 - x2);
double b = (x1 * y2 - x2 * y1) / (x1 - x2);
printf("求第一条直线方程为: y= %fx + %f\n",a,b);
//第二条直线
double x3 = 0, y3 = 100, x4 = 100, y4 = 0;
double c = (y3 - y4) / (x3 - x4);
double d = (x3 * y4 - x4 * y3) / (x3 - x4);
printf("求第二条直线方程为: y= %fx + %f\n",c,d);
double x = ((x1 - x2) * (x3 * y4 - x4 * y3) - (x3 - x4) * (x1 * y2 - x2 * y1))
/ ((x3 - x4) * (y1 - y2) - (x1 - x2) * (y3 - y4));
double y = ((y1 - y2) * (x3 * y4 - x4 * y3) - (x1 * y2 - x2 * y1) * (y3 - y4))
/ ((y1 - y2) * (x3 - x4) - (x1 - x2) * (y3 - y4));
printf("他们的交点为: (%f,%f)\n",x,y);
}
#include<stdio.h>
typedef struct point
{
double x;
double y;
}POINT;
void qiujiu(double x1,double y1,double x2,double y2,double x3, double y3,
double x4,double y4,double *x,double* y);
void main()
{
int i;
POINT a[4];
for(i=0;i<4;i++)
{
printf("请输入%d坐标:\n",i+1);
scanf("%f %f",&a[i].x,&a[i].y);
}
double x,y;
qiujiu(a[0].x , a[0].y, a[1].x , a[1].y, a[2].x, a[2].y, a[3].x, a[3].y, &x, &y);
printf("它们的交点为: (%f,%f)\n",x,y);
}
//抽象成函数
void qiujiu(double x1,double y1,double x2,double y2,double x3, double y3,
double x4,double y4,double *x,double *y)
{
//第一条直线
double a = (y1 - y2) / (x1 - x2);
if(0==a)
{
printf("第1条直线斜率为0,请检查你输入的坐标是否合法:\n");
printf("提示与y轴平行的直线没有斜率 (因为正切没有90°)\n");
printf("与x轴平行的直线斜率为0 (因为0°的正切为0)\n");
}
double b = (x1 * y2 - x2 * y1) / (x1 - x2);
printf("求第一条直线方程为: y= %fx + %f\n",a,b);
//第二条直线
double c = (y3 - y4) / (x3 - x4);
if(0==c)
{
printf("第2条直线斜率为0,请检查你输入的坐标是否合法:\n");
printf("提示与y轴平行的直线没有斜率 (因为正切没有90°)\n");
printf("与x轴平行的直线斜率为0 (因为0°的正切为0)\n");
}
double d = (x3 * y4 - x4 * y3) / (x3 - x4);
printf("求第二条直线方程为: y= %fx + %f\n",c,d);
*x = ((x1 - x2) * (x3 * y4 - x4 * y3) - (x3 - x4) * (x1 * y2 - x2 * y1))
/ ((x3 - x4) * (y1 - y2) - (x1 - x2) * (y3 - y4));
*y = ((y1 - y2) * (x3 * y4 - x4 * y3) - (x1 * y2 - x2 * y1) * (y3 - y4))
/ ((y1 - y2) * (x3 - x4) - (x1 - x2) * (y3 - y4));
}
|
|