初学C语言,来求助一下

软件和网站开发以及相关技术探讨
回复
jszxtty
帖子: 12
注册时间: 2009-07-25 11:47

初学C语言,来求助一下

#1

帖子 jszxtty » 2009-08-04 17:56

我按照书上写了段代码……
#include <stdio.h>
#include "math.h"
int
main (void)
{
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;
}
文件名S.c 在终端打gcc -Wall S.c -o S
却出现
/tmp/ccmNpcab.o: In function `main':
S.c:(.text+0x87): undefined reference to `sqrt'
collect2: ld 返回 1
有人知道怎么回事的,告诉我一下可以吗……
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

Re: 初学C语言,来求助一下

#2

帖子 dbzhang800 » 2009-08-04 18:00

看本版置顶 GCC新手入门
头像
comfanter
帖子: 190
注册时间: 2009-05-02 14:51

Re: 初学C语言,来求助一下

#3

帖子 comfanter » 2009-08-04 18:14

编译的时候加上-lm
头文件仅对接口进行描述,但头文件不是负责进行符号解析的实体。连接器也是看不到头文件的,所以你就是用预处理器指令表示需要用到XX库,连接器也可以不理你。
你需要做的是告诉编译器应该使用哪个函数库来完成对符号的解析。
jszxtty
帖子: 12
注册时间: 2009-07-25 11:47

Re: 初学C语言,来求助一下

#4

帖子 jszxtty » 2009-08-04 18:25

那要怎么改才可以呢?
头像
shanliang8008
帖子: 1362
注册时间: 2007-07-16 19:43
来自: tangshan

Re: 初学C语言,来求助一下

#5

帖子 shanliang8008 » 2009-08-04 23:39

代码: 全选

#include <stdio.h>
#include <math.h>
int main (void)
{
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;
}
头文件齐全的话这样就ok,scanf("%f%f%f",&a,&b,&c);%f之间没逗号.前提3个数得能构成三角形吧
月光林地的猫
帖子: 37
注册时间: 2009-06-27 23:33

Re: 初学C语言,来求助一下

#6

帖子 月光林地的猫 » 2009-08-06 15:12

用gcc编译的时候,加入 -lm选项。
在我自己的机器上是这样的:

代码: 全选

kimi@kimi-desktop:~/program$ gcc -o math1 math1.c -lm
[/color]
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 初学C语言,来求助一下

#7

帖子 lerosua » 2009-08-06 15:27

用到了数学库
回复