下面的代码为何编译时就停在那不动了,难道函数调用有问题?谢谢了!求平行四边形ABCD的对角线AC,BD的长度,坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4)。#include<stdio.h>
#include<math.h>
double distance(int iA1,int iA2,int iB1,int iB2)
{
double fD;
fD=sqrt((iA1-iA2)^2+(iB1-iB2)^2);
return(fD);
}void main()
{
int iX1=0,iX2=0,iX3=0,iX4=0,iY1=0,iY2=0,iY3=0,iY4=0;
double dDIST1=0,dDIST2=0;
printf("请顺序输入平行四边形四个点的坐标:");
scanf("%d,%d,%d,%d,%d,%d,%d,%d\n",iX1,iX2,iX3,iX4,iY1,iY2,iY3,iY4);
dDIST1=distance(iX1,iX3,iY1,iY3);
dDIST2=distance(iX2,iX4,iY2,iY4);
printf("平行四边形的两条对角线长度各为%lf,%lf",dDIST1,dDIST1);
}

解决方案 »

  1.   

    rebuild all试试,再不行把杀毒软件关了
    下面这有问题,都少&,传进去的是地址,不是数据
    scanf("%d,%d,%d,%d,%d,%d,%d,%d\n",&iX1,&iX2,&iX3,&iX4,&iY1,&iY2,&iY3,&iY4); 
      

  2.   

    scanf必须取变量的地址,所以要改为
    scanf("%d,%d,%d,%d,%d,%d,%d,%d\n",&iX1,&iX2,&iX3,&iX4,&iY1,&iY2,&iY3,&iY4); 
      

  3.   

    可能是VC++6出问题了,后来结束程序重新打开再编译就可以通过了,但是在运行的时候输入四个点的坐标后按回车键,出现出错提示框,说内存不能为written,请问这是怎么回事?
      

  4.   

    "%d,%d,%d,%d,%d,%d,%d,%d8个要全部输入完整,而且格式必须是1,2,3,4,5,6,7,8这样
      

  5.   

    按上述的建议修改了,添加了&,程序也做了些修改,可是运行的结果好像和预期的不一样。程序:
    #include <stdio.h> 
    #include <math.h> double distance(int iA1,int iB1,int iA2,int iB2) 

    double fD; 
    fD=sqrt((iA1-iA2)^2+(iB1-iB2)^2); 
    return(fD); 
    } void main() 

    int iX1=0,iX2=0,iX3=0,iX4=0,iY1=0,iY2=0,iY3=0,iY4=0; 
    double dDIST1=0,dDIST2=0; 
    printf("请顺序输入平行四边形四个点的坐标:"); 
    scanf("%d,%d,%d,%d,%d,%d,%d,%d\n",&iX1,&iY1,&iX2,&iY2,&iX3,&iY3,&iX4,&iY4); 
    dDIST1=distance(iX1,iY1,iX3,iY3); 
    dDIST2=distance(iX2,iY2,iX4,iY4); 
    printf("平行四边形的两条对角线长度各为%lf,%lf",dDIST1,dDIST2); 
    }
    输出的结果是两条对角线的长度为1.414214和0.000000,为什么呢?晕!
      

  6.   

    调了一下,总算找到错了,是在distance函数体内的下列语句:
    fD=sqrt((iA1-iA2)^2+(iB1-iB2)^2); 
    平方不能用^,如x的平方不能写成x^2,只能写成x*x,还真是有点不习惯!谢谢上面的各位大侠了!