鱼C论坛

 找回密码
 立即注册
查看: 2396|回复: 3

是scanf这个问题?

[复制链接]
发表于 2011-12-8 21:50:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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));   
}

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-9 22:00:27 | 显示全部楼层
什么问题?

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-9 22:02:13 | 显示全部楼层
请输入1坐标:
1.0 2.0
请输入2坐标:
1.0 3.0
请输入3坐标:
1.0 3.5
请输入4坐标:
2.3 3.4
求第一条直线方程为: y= 0.000000x + 0.000000
求第二条直线方程为: y= -1179.057547x + 0.000000
它们的交点为: (0.000000,0.000000)
hubi@ubuntu:~/code$
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-10 13:20:50 | 显示全部楼层
好长的函数,看不懂
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表