回 帖 发 新 帖 刷新版面

主题:C语言习题, 求解

下列程序的功能为:求三角形面积,请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy7_2.c存盘。
#include "math.h" 
#include "stdio.h"
area(float,float,float);     
void main()
{
    float a,b,c;
    printf("请输入三角形的三个边长值:\n");
       scanf("%f,%f,%f",a,b,c); 
    if(a+b>c&&a+c>b&&b+c>a)
         printf("Area=%f\n",area(a,b,c)); 
}
area(float a,float b,float c)   
{
    float s,area_s; 
    s=(a+b+c)/2.0; 
    area_s=sqrt(s*(s-a)*(s-b)*(s-c));
    return(area_s);
}
请给出正确的程序:

回复列表 (共3个回复)

沙发


下列程序的功能为:求三角形面积,请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy7_2.c存盘。
#include "math.h" 
#include "stdio.h"
area(float,float,float);     
void main()
{
    float a,b,c;
    printf("请输入三角形的三个边长值:\n");
       scanf("%f,%f,%f",a,b,c); 
    if(a+b>c&&a+c>b&&b+c>a)
         printf("Area=%f\n",area(a,b,c)); 
}
area(float a,float b,float c)   
{
    float s,area_s; 
    s=(a+b+c)/2.0; 
    area_s=sqrt(s*(s-a)*(s-b)*(s-c));
    return(area_s);
}
请给出正确的程序:

#include "math.h"
#include "stdio.h"
float area(float,float,float);
void main()
{
    float a,b,c;
    printf("请输入三角形的三个边长值:\n");
       scanf("%f,%f,%f",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a)
         printf("Area=%f\n",area(a,b,c));
}
float area (float a,float b,float c)
{
    float s,area_s;
    s=(a+b+c)/2.0;
    area_s=sqrt(s*(s-a)*(s-b)*(s-c));
    return(area_s);
}


板凳

#include <math.h>
#include <stdio.h>
double area(float,float,float);   

int main()
{
    float a,b,c;

    printf("请输入三角形的三个边长值:\n");
    scanf("%f%f%f",&a,&b,&c); 
    if ((a+b>c)&&(a+c>b)&&(c+b>a)&&(a-b<c)&&(a-c<b)&&(c-b<a))
        printf("Area=%f\n",area(a,b,c)); 
    else 
        printf("can't construct a triangle\n");

    return 0;
}

double area(float a,float b,float c)   
{
    double s,area_s; 

    s=(a+b+c)/2.0; 
    area_s=sqrt(s*(s-a)*(s-b)*(s-c));

    return(area_s);
}

兄弟 scanf函数你使用的格式不正确 还有就是三角形的判断还缺少点条件啊?程序最好能添个else语句,这样能够给你提示。

3 楼

您好:
    其实出现(a+b>c)&&(a+c>b)&&(c+b>a)就不用(a-b<c)&&(a-c<b)&&(c-b<a)  
    可以加上if(a<=0||b<=0||c<=0)  printf("Please input the number of greater than zero ");

我来回复

您尚未登录,请登录后再回复。点此登录或注册