注册 登录
编程论坛 C++教室

一个菜鸟请教大神,到底哪里出错了

a317371430 发布于 2014-03-23 12:27, 683 次点击
我根据错误的提示来,但是加上分号后还是不行





//程序功能:输入三角形的三条边,若能构成三角形,则判断三角形的形状并计算面积
//          (保留2 位小数); 若不能构成三角形,则输出错误提示信息。

//提示:除在指定位置添加语句之外,请不要改动程序中的其他内容。

#include <math.h>
#include <stdio.h>
void main( )
{
    double a,b,c,s,area;
    printf("输入三边:");             /* 输入提示 */
    scanf("%lf%lf%lf",&a,&b,&c);
    //请在两条星线之间填入相应的代码,判断三角形的形状并计算面积
    /*********************************************************/
    if(a<=0||b<=0||c<=0) printf("输入数据错误,这些边不能构成三角形");
    else
        if(a+b>c&&a+c>b&&b+c>a)
    {
            if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a)
            {
       if(a==b||b==c||a==c) printf("三角形形状为等腰直角三角形");
       else printf("三角形形状为非等腰直角三角形");}
       else printf("三角形形状为非直角三角形");}
    s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("%.2lf",area);
    }
    else printf("输入数据错误,这些边不能构成三角形");









    /*********************************************************/
    return 0;      /* 返回 */
}

错误的提示是C:\Users\lenovo\Desktop\实验03 分支\第4题\proj3_4.cpp(27) : error C2143: syntax error : missing ';' before 'else'
C:\Users\lenovo\Desktop\实验03 分支\第4题\proj3_4.cpp(38) : error C2143: syntax error : missing ';' before 'return'
C:\Users\lenovo\Desktop\实验03 分支\第4题\proj3_4.cpp(39) : error C2143: syntax error : missing ';' before '}'
C:\Users\lenovo\Desktop\实验03 分支\第4题\proj3_4.cpp(39) : error C2143: syntax error : missing ';' before '}'
C:\Users\lenovo\Desktop\实验03 分支\第4题\proj3_4.cpp(39) : error C2143: syntax error : missing ';' before '}'
7 回复
#2
niketim2014-03-23 18:53
把void main()改成int main()
把return 0前面的那个else print(....)删除掉就应该可以了
#3
zhaobuzhule2014-03-23 20:43
这是C语言,不是C++啊,楼主走错地方了
#4
rjsp2014-03-24 09:34
自己将代码好好排版一下就能发现问题
#5
liusonglin2014-03-24 12:40
这样的程序就可以运行了!
#include <math.h>
#include <stdio.h>
int main( )
{
    double a,b,c,s,area;
    printf("输入三边:");             /* 输入提示 */
    scanf("%lf%lf%lf",&a,&b,&c);
    //请在两条星线之间填入相应的代码,判断三角形的形状并计算面积
    /*********************************************************/
    if(a<=0||b<=0||c<=0) printf("输入数据错误,这些边不能构成三角形");
    else
        if(a+b>c&&a+c>b&&b+c>a)
    {
            if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a)
            {
                 if(a==b||b==c||a==c) printf("三角形形状为等腰直角三角形");
                 else printf("三角形形状为非等腰直角三角形");
            }
            else printf("三角形形状为非直角三角形");
   
    s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("%.2lf",area);
    }
    else printf("输入数据错误,这些边不能构成三角形");

    return 0;     
}
#6
liusonglin2014-03-24 12:42
该程序有两处错误:1.多了一个“}”符号,2.void无返回值。
#7
a137004495512014-03-24 15:57
楼主我想说我刚学C++  一天,我不懂,但我还是发现了一点,你的主函数 开头是void 也就是没有返回值的,  可是你函数中是有返回值的! 不知道我说的对不对。
#8
gpf2014-03-25 21:02
#include <math.h>
#include <stdio.h>
void main( )
{
    double a,b,c,s,area;
    printf("输入三边:");             /* 输入提示 */
    scanf("%lf%lf%lf",&a,&b,&c);
    //请在两条星线之间填入相应的代码,判断三角形的形状并计算面积
    /*********************************************************/
    if(a<=0||b<=0||c<=0)
        printf("输入数据错误,这些边不能构成三角形");
    else
    {
        if(a+b>c && a+c>b && b+c>a)
        {
            if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a)
            {
              if(a==b||b==c||a==c)
               printf("三角形形状为等腰直角三角形");
              else
              printf("三角形形状为非等腰直角三角形");
            }
          else
              printf("三角形形状为非直角三角形");
          s=(a+b+c)/2.0;
          area=sqrt(s*(s-a)*(s-b)*(s-c));
          printf("%.2lf",area);
        }
    else  
        printf("输入数据错误,这些边不能构成三角形");
    }   
}
1