额,貌似你就没什么对的地方。首先,在main函数中,int xyz(int l),这个不能这样写啊。声明也不是在主函数中声明啊。第二,这个int l?你确定是int型的?x1,x2,y1,y2都可以是int 型的,唯独l不可以,你查下sqrt()的返回值,是float型的。第三,x1,x2,y1,y2在哪里赋值了?没地方赋值怎么计算啊,你的xyz的原型应该写成 float(int x1,int x2,int y1,int y2),这样才能传值。第四,int i是形参,不能做返回值的,这涉及到内存模型问题
你没有加头文件,在程序中使用数学函数时,应该在源文件中使用#include
#include
#include
double xyz(double x1,y1,x2,y2)
{ double l,h;
h=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
l=sqrt(h);
return l;
}
int main()
{
double m,n1,n2,n3,n4;
printf("请输入四个实型数:");
scanf("%f %f %f %f",&n1,&n2,&n3,&n4);
m=xyz(n1,n2,n3,n4);
printf("%f",m);
system("pause");
return 0;
}
你的代码真叫人哭笑不得!
把scanf("%d %d %d %d",n1,n1,n2,n2);改成scanf("%d%d%d%d",&n1,&n2,&n3,&n4);,输入时各数之间用空格或回车隔开。
把函数定义int xyz(int l)改成float xyz(int x1,int x2,int y1,int y2),把其中的float x1,y1,x2,y2;改成float l;。
把main中的int xyz(int l);改成float xyz(int,int,int,int);,再把int m,n1,n2,n3,n4;中的m删除,另加一行float m;。
把m=xyz(l);改成m=xyz(n1,n2,n3,n4);。
把printf("%d",m);改成printf("%f\n",m);。
这样大概就可以了……
scanf("%d %d %d %d",n1,n1,n2,n2)输入没有取址符