爱编程的小笨孩


私信TA

用户名:2119394720

访问量:24751

签 名:

我在成长,总有一天我会足够优秀。

等  级
排  名 137
经  验 7452
参赛次数 6
文章发表 44
年  龄 0
在职情况 学生
学  校 黄河科技学院
专  业 软件工程

  自我简介:

一只想要当凤凰的鸡

解题思路:
根据题目给出的数学公式,定义两个带参的宏,一个S表示(a+b+c)/2,另一个AREA表示sqrt(S*(S-a)*(S-b)*(S-c))。在主函数中可以直用printf("%.3f",AREA);输出,编译器在编译之前会进行预处理(也叫宏展开)。简单来说就是换,也就是直接将宏名替换为自身所表示的字符串,所以可以直接输出AREA

参考代码:

#include<stdio.h>
#include<math.h>
#define S ((a+b+c)/2)
#define AREA sqrt(S*(S-a)*(S-b)*(S-c)) 
int main()
{
    //定义a,b,c表示三角形的三条边
    float a,b,c;
    float area;
    scanf("%f %f %f",&a,&b,&c);
    printf("%.3f",AREA);
    return 0;
}


 

0.0分

2 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

#include<stdio.h>
#include<math.h>
#define S (a+b+c)/2
#define area(a,b,c) sqrt(S*(S-a)*(S-b)*(S-c))
int main()
{
    int a,b,c;
    scanf("%d %d %d", &a, &b, &c);
    printf("%.3f", area(a,b,c));
    return 0;
}
甚至不用定义(int、float)area,因为宏展开以后根本没有area这个实参。
2022-08-11 21:15:11
  • «
  • 1
  • »