注册 登录
编程论坛 C语言论坛

求助:为什么我输入三边(3.0,4.0,5.0)后一直按Enter键,一直转行,不执行? 【用的vs 2019】

安静的美男子 发布于 2022-12-08 11:31, 769 次点击
#include<stdio.h>
#include<math.h>
int main()
{
    double triangle_area(double a, double b, double c);
    double a, b, c,area=0;
    printf("请输入三角形的三条边:");
    scanf_s("%lf,%lf,%lf\n", &a, &b, &c);
    area = triangle_area(a, b, c);
    printf("三角形的面积为:%f", area);
    return 0;
}

double triangle_area(double a, double b, double c)
{
    double p, s;
    p = (a + b + c) / 2;
    s = sqrt(p * (p - a) * (p - b) * (p - c));
    if (a + b > c && b + c > a && a + c > b)
        return (s);
    else return (0.0);
}
3 回复
#2
rjsp2022-12-08 12:22
scanf_s("%lf,%lf,%lf\n", &a, &b, &c);
改为
scanf_s("%lf,%lf,%lf", &a, &b, &c);
当然,最好改为
scanf("%lf,%lf,%lf", &a, &b, &c); 少用 scanf_s 这种恶心的东西
#3
rjsp2022-12-08 12:28
改一下,差不多是这样

程序代码:
#include <stdio.h>
#include <math.h>

double triangle_area( double a, double b, double c );

int main( void )
{
    double a, b, c;
    printf( "请输入三角形的三条边长度:" );
    if( 3 == scanf("%lf ,%lf ,%lf",&a,&b,&c) )
    {
        double area = triangle_area( a, b, c );
        printf( "三角形的面积为:%f\n", area );
    }
   
    return 0;
}

double triangle_area( double a, double b, double c )
{
    if( a+b>c && b+c>a && c+a>b )
    {
        double p = (a+b+c)/2;
        double s = sqrt( p*(p-a)*(p-b)*(p-c) );
        return s;
    }
    return 0;
}
#4
asdsdgr2022-12-08 15:58
改成scanf就行
1