Allen


私信TA

用户名:lishuxin

访问量:911

签 名:

等  级
排  名 53770
经  验 260
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 大连海事大学
专  业

  自我简介:

解题思路: 使用带返回值的宏    


注意事项:   1⃣️注意审题!保留三位小数!宏中的类型是否定义准确了!

                  2⃣️由于编写宏的时候编译器不会检查你的语法错误,所以我们一定要细心再细心地检查我们所定义的参数类型是否正确,是否正确添加分号等等,出现多个表达式的时候,建议使用反斜杠\分行。
参考代码:

                                            #include <stdio.h>

                                            #include <math.h>

                                            #define S(a,b,c) \

                                            ({float S_;\

                                            S_=( a + b + c ) / 2 ; S_;})

                                            #define A(s,a,b,c) ({float A_;\

                                            A_ =sqrt( s * ( s - a ) * ( s - b ) * ( s - c ) ); A_;})

                                            int main(){

                                                float a,b,c,s,area;

                                                scanf("%f%f%f",&a,&b,&c);

                                                s = S(a, b, c);

                                                area = A(s, a, b, c);

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

                                                return 0;

                                            }

                                            

 

0.0分

2 人评分

  评论区

提个醒,{}可以作为返回值
例如下面一个例子:

#include <stdio.h>
#define func(a) ({a=a+5; a;})
int main(void)
{
//int i;
//int a = (i=5, ++i);
int a=0;
int b = func(a);
printf("a=%d/n", a);
printf("b=%d/n", b);
return 0;
}

那么

输出:

a=5

b=5

引自https://www.cnblogs.com/jkred369/p/7155788.html
2020-12-17 20:30:36
  • «
  • 1
  • »