2207122216 发表于 2022-10-30 10:48:36

为什么‘abs' was not declar... 会报这个错误

#include<stdio.h>
#include<math.h>
int main()
{
        int a,b,c,d,e,f,s;
        scanf("%d%d%d",&a,&b,&c);
       
        if(a+b>c && a+c>b && c+b>a)
        {d=(a*a+b*b-c*c)/2*a*b;
        e=abs(d);
        f=sqrt(1-e*e);
        s=0.5*a*b*f;
        printf("%d\n",s);
        }
        else printf("0\n");
       
        return 0;
}

2207122216 发表于 2022-10-30 10:49:09

我明明加了#include<math.h>

jackz007 发表于 2022-10-30 10:53:15

      函数名写错了
fabs()

ba21 发表于 2022-10-30 10:54:58

没问题

傻眼貓咪 发表于 2022-10-30 10:56:16

本帖最后由 傻眼貓咪 于 2022-10-30 11:02 编辑

试试 fabs()

想用 abs() 就 #include <stdlib.h>,返回 int
<math.h> 没有 abs(),但一些编译器如 gcc 自带 abs(),不用 include 任何东西

柿子饼同学 发表于 2022-10-30 10:57:32

我跑了一下没问题啊
fabs 是 小数单独的绝对值函数

homeskating 发表于 2022-10-30 11:14:33

估计是编译环境问题

人造人 发表于 2022-10-30 12:35:57

abs不在math.h里面,abs在stdlib.h里面

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

int main() {
    int a, b, c, d, e, f, s;
    scanf("%d%d%d", &a, &b, &c);
    if(a + b > c && a + c > b && c + b > a) {
      d = (a * a + b * b - c * c) / 2 * a * b;
      e = abs(d);
      f = sqrt(1 - e * e);
      s = 0.5 * a * b * f;
      printf("%d\n", s);
    } else printf("0\n");
    return 0;
}

qsva 发表于 2022-10-30 14:45:23

没有找到问题

2207122216 发表于 2022-10-30 17:15:18

为什么输入11,12,2会报个-2147483648的出来啊

2207122216 发表于 2022-10-30 18:02:47

人造人 发表于 2022-10-30 12:35
abs不在math.h里面,abs在stdlib.h里面


为什么输入11,12,2会报个-2147483648的出来啊

人造人 发表于 2022-10-30 20:07:18

2207122216 发表于 2022-10-30 18:02
为什么输入11,12,2会报个-2147483648的出来啊

这个程序是做什么的?
你认为输出多少就是正确的?
页: [1]
查看完整版本: 为什么‘abs' was not declar... 会报这个错误