解题思路:
#define s S=(a+b+c)/2;  计算大S的值,#define w area=sqrt(S*(S-a)*(S-b)*(S-c));  应用大S的值计算面积,
小s小w分别表示对应各自功能的密码,

注意事项:

注意宏定义函数的分号使用,如果直接定义不用S与area,宏定义时不用加分号。

个人理解仅供参考。



参考代码:

#include<stdio.h>
#define s S=(a+b+c)/2;
#define w area=sqrt(S*(S-a)*(S-b)*(S-c));  //大S

/*  不用等号的中间变量

#define s (a+b+c)/2  printf("%.3lf",area);

#define area sqrt(s*(s-a)*(s-b)*(s-c))  printf("%.3lf",area);  小s

*/

int main(){

double a,b,c,t,S,area;

    scanf("%lf%lf%lf",&a,&b,&c);
  s
  w


    printf("%.3lf",area);

    return 0;

}

 

点赞(12)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 7 条评论

小雨 5年前 回复TA
这样可以吗,有什么不好的
#include<stdio.h>
#include<math.h>
#define s (a+b+c)/2
#define area sqrt(s*(s-a)*(s-b)*(s-c))
int main()
{
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    printf("%.3lf\n",area);
    return 0;
}
Spperman 5年前 回复TA
@华农赵子龙 比赛时候经常会写几个宏定义函数的
华农赵子龙 5年前 回复TA
#include <stdio.h>
#include <math.h>
#define S S=(a+b+c)/2
#define SS s=sqrt(S*(S-a)*(S-c)*(S-b))
int main(int argc, char const *argv[])
{
	double a,b,c,S,s;
	scanf("%lf %lf %lf", &a, &b, &c);
	printf("%.3lf\n", SS);
	return 0;
}
寡人有疾 6年前 回复TA
@Spperman 怪不得我在网页上编译老是不通过
Spperman 6年前 回复TA
@15751579796 嗯的,加上更为严谨,不加的话,只要知道函数原型也可以使用,系统会自动为你搜选函数库的。
Spperman 6年前 回复TA
嗯的,加上更为严谨,不加的话,只要知道函数原型也可以使用,系统会自动为你搜选函数库的。
15751579796 6年前 回复TA
少了 #include<math.h>头函数