C++找人帮改错,谢了

函数之点与点之间的距离
试题描述
   编写形如float fun(int a1, int b1, int a2, int b2)的函数,该函数的返回值是一个非负浮点数,是点(a1,b1)与点(a2,b2)之间的距离。
   在主函数main()中输入四个整数,分别代表两个点的坐标。然后调用函数fun(int, int, int, int),并将这四个整数作为该函数的实参。最后输出该函数的返回值到屏幕,小数点后必须保留2位有效数字(四舍五入),不足补零。
输入
   输入四个整数m、n、p、q,以空格分开,分别代表两个点的坐标。
输出
   输出点(m,n)到点(p,q)之间的距离,小数点后必须保留2位有效数字(四舍五入),不足补零。
输入示例1
   3 4 3 4
输出示例1
   0.00
输入示例2
   3 4 5 6
输出示例2
   2.83
数据范围
   输入为int范围的整数,输出为非负浮点数
#include<stdio.h>
#include<math.h>
float fun(int m, int n,int p,int q){
float y;
(float)y=sqrt((float)(p-m)(p-m)+(float)(q-n)(q-n));
return y;
}
int main(){
float fun(int m, int n,int p,int q);
float y;
int m,n,p,q;
scanf("%d%d%d%d",&m,&n,&p,&q);
printf("%.2f",y);
return 0.00;
}

怎么还发两遍??

#include<stdio.h>
#include<math.h>
float fun(int m, int n, int p, int q) {
    float y = sqrt((float)(p - m)*(p - m) + (float)(q - n)*(q - n));
    return y;
}
int main() {
    float fun(int m, int n, int p, int q);
    float y;
    int m, n, p, q;
    scanf("%d%d%d%d", &m, &n, &p, &q);
    y=fun(m,n,p,q);
    printf("%.2f", y);
    return 0.00;
}