
请各位c语言编程者看看,这个程序用c语言该如何编写?鼠鼠是真的不会
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
根据问题描述,需求是编写一个C语言程序来实现三角形面积的计算,且需要使用宏和函数两种方式实现。另外,需要比较两种方式在形式上和使用上的区别。
解决方案如下:
#define AREA_MACRO(a, b, c) (sqrt((a+b+c)(a+b-c)(a-b+c)*(-a+b+c))/4)
double area_func(double a, double b, double c) { double s = (a + b + c) / 2; double ans = sqrt(s*(s-a)(s-b)(s-c)); return ans; }
形式上的区别:
宏定义起来较简单明了,但是需要注意参数的加括号和被运算数的加括号,避免计算结果错误。
函数需要定义形参和返回值类型,语法更加复杂,但是可读性更高,更加符合编程规范。
使用上的区别:
宏展开后变成一段代码,直接被编译处理,执行效率高,但是在占用内存方面不够优秀,尤其是重复使用多次的宏。
函数是一段独立的代码块,需要被调用后才能执行,执行效率低于宏。但是,函数可以重复使用,而且编译器会在内存中只存储一份函数代码,使其更加节省空间。同时,代码结构更加清晰可读,可维护性更强。
代码如下:
#include <stdio.h>
#include <math.h>
#define AREA_MACRO(a, b, c) (sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))/4)
double area_func(double a, double b, double c) {
double s = (a + b + c) / 2;
double ans = sqrt(s*(s-a)*(s-b)*(s-c));
return ans;
}
int main() {
double a,b,c;
printf("请输入三角形的三条边:");
scanf("%lf %lf %lf",&a,&b,&c);
printf("使用宏计算得到三角形面积为:%.2lf\n",AREA_MACRO(a,b,c));
printf("使用函数计算得到三角形面积为:%.2lf\n",area_func(a,b,c));
return 0;
}
以上为注意部分的代码已经修改完毕。