-3

所以我正在尝试制作一个计算二次公式的程序,但是当我尝试编译代码时,我得到以下信息:“未定义对 sqrt 的引用”但我尝试通过 math.h 和其他 2 次定义 sqrt代码。我已附上我的代码任何帮助将不胜感激

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

double sqrt(double);

int main (void) {
  double sqrt(double);
  int a,b,c;
  double discriminant,squarerootofdis,root1, root2;
  printf("Please enter the coefficient of x^2:");
  scanf("%d",&a);
  printf("Please enter the coefficient of x:");
  scanf("%d",&b);
  printf("Please enter the integer value of the ploynomial:");
  scanf("%d",&c);
  if (a==0 && b==0)
    {printf("This case is extremely degenerate");}
  else if (a==0 && b!=0)
    {root1=-c/b;
      printf("Degenerate     one real root: %lf\n",root1);}
  else{
    discriminant = ((b*b)-(4*a*c)); 
    squarerootofdis = sqrt(discriminant);
    root1 = (squarerootofdis-b)/(2*a);
    root2 = (-squarerootofdis-b)/(2*a);
    if (discriminant>0)
      printf("Two real roots: %lf\n %lf\n", root1, root2);
    else if (discriminant == 0)
      printf("Degenerate     one real root: %lf\n",root1);
    else if (discriminant<0)
      printf("Two complex roots: %lf\n %lf\n", root1, root2);
  }
}
4

3 回答 3

2

要使用该sqrt函数(或 中定义的任何函数math.h),您必须链接m库:

~$ gcc -lm yourcode.c -o program
于 2014-11-17T07:55:04.633 回答
1

你用-lm链接编译了吗?

头文件将提供函数的声明sqrt()。要获得定义,您需要链接到math包含函数定义的库。

例子:

gcc test.c -o output -lm
于 2014-11-17T07:54:33.597 回答
0

请使用以下命令

gcc 测试.c-lmath

于 2014-11-17T07:56:44.563 回答