发新话题
打印

C语言问题求助

C语言问题求助

各位大侠,小弟有一个问题请教。
这是我从书上抄的C代码。但运行结果总是不对,不知道是怎么回事。
#include "stdio.h"
main()
{
        float a=0,b=0,c=0;
        float area=0,s=0;
        printf("请输入三角形的三边a,b,c:");
        scanf("%f%f%f",&a,&b,&c);
        if(a+b>c&&a+c>b&&b+c>a)
        {
                s=(a+b+c)/2.0;
                area=sqrt((s*(s-a)*(s-b)*(s-c));
                printf("三角形面积area=%f",area);
        }
}
比如我输入a=3,b=4,c=5很明显,结果应该是6
但运行后结果却是-32636.0000不知道是为什么。

TOP

编译都通不过,格式怎么这么混乱。
#include <stdio.h>
#include <math.h>
int main(void)
{
        float a = 0, b = 0, c = 0;
        float area = 0, s = 0;
        printf("input a,b,c:\n");
        scanf("%f%f%f",&a, &b, &c);
        if ( ( ( a + b ) > c )
           && ( ( a + c ) > b )
           && ( ( b + c ) > a ) )
        {
                s = (a+b+c)/2.0;
                area = sqrtf( s * (s-a) * (s-b) * (s-c) );
                printf("area=%f\n", area);
        }
        return 0;
}
整理了一下,area=sqrt((s*(s-a)*(s-b)*(s-c));这行的括号都不对。
如果在出错只能说明你得编译器有问题,我是在gcc下弄的
gcc -lm file.c -o file
input a,b,c:
3
4
5
area=6.000000
我们的目标一定要达到;
我们的目标一定能达到。

TOP

加上头文件
#include<math.h>
就可以了

TOP

都没加头文件 能通过编译吗??

TOP

一年以前的帖子?

TOP

area=sqrt((s*(s-a)*(s-b)*(s-c));这行的括号都不对。
怎么错了哦,冒看出来.

TOP

的确是一年前的帖子

改完了,才发现了,哈哈.........
#include "stdio.h"
#include "math.h"
void main()
{
        float a,b,c,area,s;
        
        printf("请输入三角形的三边a,b,c:");
        scanf("%f,%f,%f",&a,&b,&c);
        
        if((a+b)>c&&(a+c)>b&&(b+c)>a)
        {
                s=(a+b+c)/2;
                area=sqrt(s*(s-a)*(s-b)*(s-c));
                printf("三角形面积area=%f",area);
        }
}

TOP

发新话题