#include <stdio.h> #define SEMI_PERIMETER(a, b, c) ((a + b + c) / 2.0) #define TRIANGLE_AREA(a, b, c) (SEMI_PERIMETER(a, b, c) * \ (SEMI_PERIMETER(a, b, c) - a) * \ (SEMI_PERIMETER(a, b, c) - b) * \ (SEMI_PERIMETER(a, b, c) - c)) / 2.0 int main() { double a, b, c; printf("Enter the sides of the triangle a, b, c: "); scanf("%lf %lf %lf", &a, &b, &c); double area = TRIANGLE_AREA(a, b, c); printf("The area of the triangle is: %.2lf\n", area); return 0; }优化
时间: 2023-11-27 09:49:53 浏览: 26
可以考虑将计算半周长的宏定义 `SEMI_PERIMETER` 改为函数,这样可以避免多次重复计算半周长的值。同时,可以将计算三角形面积的宏定义 `TRIANGLE_AREA` 改为函数,这样可以让代码更加清晰易懂。以下是优化后的代码:
```
#include <stdio.h>
double semi_perimeter(double a, double b, double c) {
return (a + b + c) / 2.0;
}
double triangle_area(double a, double b, double c) {
double s = semi_perimeter(a, b, c);
return sqrt(s * (s - a) * (s - b) * (s - c));
}
int main() {
double a, b, c;
printf("Enter the sides of the triangle a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
double area = triangle_area(a, b, c);
printf("The area of the triangle is: %.2lf\n", area);
return 0;
}
```
这样的代码更易于阅读和维护,并且不会产生宏定义带来的副作用。