菜鸟问一道简单的C语言编程题

以下程序的功能是:从键盘上输入三角形三条边的长度(a,b,c),利用带参数的宏定义,求三角形的面积。程序的部分语句如下,请先仔细读程序及注释,然后在此基础上写出完整的程序(缺少的语句可直接写在预留的空白处),并对新写的语句加上注释。(提示:三角形面积的计算方法为:area=sqrt((s*(s-a)*(s-b)*(s-c)),其中s=(a+b+c)/2。)


main()
{float a,b,c,area,s;
printf("\nInput a,b,c: ");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a) /*判断是否能构成三角形*/
{ s=(a+b+c)/2;
area=sqrt(AREA(s,a,b,c));
printf("\narea=%f\n",area);
}
else printf("\nData error!\n");}

完整程序如下,我加的就是定义了一个函数AREA
#include <stdio.h>
#include <math.h>
//函数的定义,定义area=sqrt((s*(s-a)*(s-b)*(s-c))根号下的内容,返回一个值,在主函数里调用该函数
float AREA(float s,float a,float b,float c){
float X=s*(s-a)*(s-b)*(s-c);
return X;
}
void main()
{float a,b,c,area,s;
printf("\nInput a,b,c: ");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a) /*判断是否能构成三角形*/
{ s=(a+b+c)/2;
area=sqrt(AREA(s,a,b,c));
printf("\narea=%f\n",area);
}
else printf("\nData error!\n");}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-29
AREA(s,a,b,c
第2个回答  2008-04-29
#define AREA(a,b,c,d) a*(a-b)*(a-c)*(a-d)

在main()前加上如上的带参数的宏定义就可以```
第3个回答  2008-04-29
如楼上所说
加上这个宏就ok了
完整程序如下:
#include"stdio.h"
#include"math.h"
#define AREA(a,b,c,d) a*(a-b)*(a-c)*(a-d)
main()
{float a,b,c,area,s;
printf("\nInput a,b,c: ");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a) /*判断是否能构成三角形*/
{ s=(a+b+c)/2;
area=sqrt(AREA(s,a,b,c));
printf("\narea=%f\n",area);
}
else printf("\nData error!\n");}