C语言求海伦公式的问题(VC6.0),编译没错运行却出错!

C(编程语言)_C\/C++_编译器_编程

#include<stdio.h>#include<math.h>voidmain(){inta,b,c,area,s;printf("请输入a,b,c的值:\n");s...

#include<stdio.h>#include<math.h>void main(){ int a,b,c,area,s; printf("请输入a,b,c的值:\n"); scanf("%lf,%lf,%lf",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area);}

展开

最佳答案

最佳答案

a,b,c应该为double a,b,c;因为输入时用%f输入了。area 应为float,因为%f输出的是浮点型,所以应该将 area 定义为 float,而不是int。s改为float或者double都可以。如果s是 int 型的话,那么s=(a+b+c)/2得到的结果是一个不精确整数,比如a=3,b=4,c=4;s应该为5.5,但由于s是int 型的,结果会是5,所以说s应改为float或double。建议改为double,应为double的精度高于float的精度下面是修改后的程序:#include<stdio.h>#include<math.h>void main(){ double a,b,c,s; float area; printf("请输入a,b,c的值:\n"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area);}再补充一点吧,int对应的是%d ,float 对于的是%f, double对应的是 %lf, long对应的是%ld 。这些都是比较常用的数据类型。

其他回答 (3)

#1

int a,b,c,area,s; // int 改成 doublescanf("%lf,%lf,%lf",&a,&b,&c); //输入数据时:00,00,00(回车),这样做了?

#2

#include<stdio.h>#include<math.h>void main(){ double a,b,c,area,s; printf("请输入a,b,c的值:\n"); scanf("%lf,%lf,%lf",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area);}

#3

area是int型,你却用%f输出!!

← 返回列表