每日一题
题目:C语言求三角形面积
算法思想:
题目也是很简单,涉及到求根函数sqrt()
,这里并不过多赘述,主要分享一下误区----float
与double
错误程序代码:
#include<stdio.h>
#include<math.h>
int main(){
float a, b, c, p, s;
scanf("%f %f %f", &a, &b, &c);
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.1f", s) ;
return 0;
}
在这里,有一处错误就是变量类型,正确为double s;
。因为sqrt函数原型为double sqrt(double);
所以我认为在定义时,根据需要定义,一般定义double的比较多,这样可以减少错误。
程序代码:
#include<stdio.h>
#include<math.h>
int main(){
float a, b, c, p;
double s;
scanf("%f %f %f", &a, &b, &c);
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.1lf", s) ;
return 0;
}
运行结果:
3 4 5
6.0
总结:
一、C语言float与double
- C语言中常用的小数有两种类型,分别是
float
或double
;float 称为单精度浮点型,double 称为双精度浮点型。 - 小数的长度是固定的,float 始终占用4个字节,double 始终占用8个字节。
%f
以十进制形式输出float
类型;%lf
以十进制形式输出double
类型;%f
和%lf
默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。
二、sqrt
sqrt
功能:一个非负实数的平方根sqrt
函数原型:在VC6.0中的math.h头文件的函数原型为double sqrt(double);