解题思路:
根据题目给出的数学公式,定义两个带参的宏,一个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这个实参。
【明明的随机数】 (C++代码)浏览:837 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:782 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:909 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:691 |
WU-复数求和 (C++代码)浏览:2121 |
1012题解浏览:938 |
1052题解(链表操作)浏览:782 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:632 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:462 |
1199题解浏览:708 |
爱编程的小笨孩 2022-08-11 22:34:27 |
非常感谢您指出我的错误,谢谢!