请帮我看一下我这个已知三边求三角形面积的程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:31:51
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,x,s;
printf("input...\n");
scanf("%f,%f,%f",&a,&b,&c);
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c));
printf("s=%f",s);
}

输入3,4,5,得到一个s=3709741224672226000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.

格式符使用错误
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,x,s;
printf("input...\n");
scanf("%lf,%lf,%lf",&a,&b,&c);//****
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c));
printf("s=%lf",s);//****
}

问题出在这里:
你把a,b,c,x,s定义成double型的变量,那么在scanf和printf函数中的%后的格式控制就应为lf(folat的格式控制为f),你可以把所有%后的f改成lf,或者只把double改成float
修改后如下:
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,x,s;
printf("input...\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c));
printf("s=%lf",s);
printf("\nx=%lf",x);
}
或者
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x,s;
printf("input...\n");
scanf("%f