编译C语言时遇到了问题,求助!

编译C语言时遇到了问题,求助!

小弟想在linux下学C语言,可是编译的时候不成功.是不是函数名不对啊?还是调用函数的方法错了?请各位大哥大姐帮忙啊!
下面是小代码:
#include<stdio.h>
#include<math.h>
main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
结果:
/tmp/ccIms7yH.o(.text+0x90): In function `main':
fffff.c: undefined reference to `sqrt'
collect2: ld 返回 1
怎么回事啊?
main() -------->没有定义类型 正确的int main()
sqrt  math.h 没有定义 要定义一下 #define sqrt(x) x*x
#include <stdio.h>
#include <stdilb.h>
#include <math.h>
#define sqrt(x) x*x

int main() {
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n", a, b, c, s);
printf("area=%7.2f\n", area);
return(0);
}
谢谢,成功了
[quote:45aa4990cf="0xfffff"]main() -------->没有定义类型 正确的int main()
sqrt  math.h 没有定义 要定义一下 #define sqrt(x) x*x[/quote]

"#define sqrt(x) x*x"是什么意思?
是不是所有类似的情形都要这么定义一下?拜托举个例子好吗?
#define 是预处理宏
也不是所有 这个方便你定义一些简单的算法
也可以用定义函数表示
int sqrt(x){
int x;
x=x*x;
}
我照你的代码编译了一下,是可以编译了,可结果不对啊.
#include<stdio.h>
#include<math.h>
#define sqrt(x) x*x
main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
#include<stdio.h>
#include<math.h>
#define sqrt(x) x*x
main()
{
float a,b,c,s,area;
int x;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
x=s*(s-a)*(s-b)*(s-c);
area=sqrt(x);
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
#include<stdio.h>
#include<math.h>

main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
x=s*(s-a)*(s-b)*(s-c);
area=sqrt(x);
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}

int sqrt(x){
int x;
x=x*x;
}