三角形面积为:
area=sx(s-a)x(s-b)x(s-c) g= (a+b+c)/2
其中a、b、c分别是三角形的3条边。请分别定义计算s和area的宏,再使用函数实现。比较两者在形式上和使用上的区别。
(1)使用宏实现
#include <stdio.h> #include <math.h> #define S(a ,b, c) ((a)+(b)+(c))/2 #define AREA(s,a,b,c) sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c))) int main(void) { double a, b, c, s; printf("input a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); s = S(a,b,c); printf("s = %lf, area = %lf\n", s, AREA(s,a,b,c)); return 0; }
(2)使用函数实现
#include <stdio.h> #include <math.h> double f1(double a, double b, double c) { return (a+b+c)/2; } double f2(double s, double a, double b, double c) { return sqrt(s*(s-a)*(s-b)*(s-c)); } int main(void) { double a, b, c, s; printf("input a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); s = f1(a,b,c); printf("s = %lf, area = %lf\n", s, f2(s,a,b,c)); return 0; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
(1)使用宏实现
#include <stdio.h> #include <math.h> #define S(a ,b, c) ((a)+(b)+(c))/2 #define AREA(s,a,b,c) sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c))) int main(void) { double a, b, c, s; printf("input a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); s = S(a,b,c); printf("s = %lf, area = %lf\n", s, AREA(s,a,b,c)); return 0; }(2)使用函数实现
#include <stdio.h> #include <math.h> double f1(double a, double b, double c) { return (a+b+c)/2; } double f2(double s, double a, double b, double c) { return sqrt(s*(s-a)*(s-b)*(s-c)); } int main(void) { double a, b, c, s; printf("input a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); s = f1(a,b,c); printf("s = %lf, area = %lf\n", s, f2(s,a,b,c)); return 0; }