| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖
标题:新人再来问问题
取消只看楼主 加入收藏
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:11 
新人再来问问题
这是一道求三角形面积的题目。 我想做到的是当输入数据(三角形的三边关系)正确时,就计算三角形的面积。当数据不正确时就输入提示,然后再输入数据。下面是我写的一段程序,好像有点问题。尤其是goto那里的问题。我想知道怎样修改才能做到最好。呃。。。。。因为自学C语言没多久,有很多东西都不懂,前辈们不要讲得太过深,我会看不明白的。因为还有很多东西我没有看完。谢谢。
#include"stdio.h"
#include"math.h"
 main()
    {
        int a,b,c;
        double s,area;
        printf("Please input a,b,c:\n");
        loop:
        scanf("%d%d%d",&a,&b,&c);
        if((a+b)>c&&(b+c)>a&&a>0&&b>0&&c>0&&(a+c)>b)
        {
        s=((double)(a+b+c)/2);
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("area=%g\n",area);
        return(getch());
        }

        else(printf("Please input the correct number:\n"));
        goto loop;
        getch();
        }
搜索更多相关主题的帖子: 新人 
2010-11-07 23:56
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
没有人帮忙看一下?
2010-11-08 10:38
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用langman945在2010-11-8 17:13:53的发言:

看下我这个吧!

#include
#include
main( )
{    float a,b,c,area,p;
  scanf("%f,%f,%f",&a,&b,&c);
  p=(a+b+c)/2;
  if(a+b>c&&a+c>b&&b+c>a)
  {    area=sqrt(p*(p-a)*(p-b)*(p-c));
    printf("Area=%6.2f\n",area);  
  }
  else  printf("Error\n");
}
嗯,这一个也可以。不过我希望的是在输入错误的前提,再输入一次,直到输入正确为止。而不是输入错误后,结束程序。
2010-11-08 17:28
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用vandychan在2010-11-8 13:19:51的发言:

看了 尝试下不用GOTO吧
为什么不用GOTO?
2010-11-08 17:36
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用谁的益达在2010-11-8 17:39:56的发言:

#include"stdio.h"
#include"math.h"
main()
    {
        int a,b,c;
        double s,area;
        printf("Please input a,b,c:\n");
        loop:
        scanf("%d%d%d",&a,&b,&c);
        if((a+b)>c&&(b+c)>a&&a>0&&b>0&&c>0&&(a+c)>b)
        {
        s=((double)(a+b+c)/2);
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("area=%g\n",area);
        
        }

        else(printf("Please input the correct number:\n"));
      goto loop;
        }
看一下
呃。。。。前辈有一个问题。。。。。这一个程序输出结果后不会结束。。。它会等待下一次输入。。。
2010-11-08 17:55
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
还有一个问题,为什么我故意输入小数的时候,它会变成死循环?
2010-11-08 17:58
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用pangding在2010-11-8 18:14:23的发言:

else 那用 {} 把那个 goto 括进去。否则不管什么情况都会 goto 的。
死循是因为,只是那个 scanf 卡住了,它能读缓冲区里的东西(虽然没读对),所以不会等待人再输入了。
把GOTO括进去?它说翻译错误。前辈你写给我看看,可能我理解错了。
2010-11-08 18:19
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用pangding在2010-11-8 18:47:24的发言:

就是这意思嘛:
else {
    printf("Please input the correct number:\n");
    goto loop;
}
什么叫翻译错误?没太看懂你说的。
。。。。打错字。。。编译错误。。。
不过原来真的是我自己弄错,按照你那样是可以的。谢谢
2010-11-09 10:51
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用luoyang2404在2010-11-8 19:02:19的发言:

楼主,你的代码我运行的没问题啊,可以跳转啊,有问题???我觉得就是风格不好而已
是可以运行。但是我觉得我最后那一个return好像有点问题,因为那里我是乱来的。所以。。。。
2010-11-09 10:53
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用gaochizhen33在2010-11-8 21:16:16的发言:

定义的不是整形的么 输入小数会有效么
所以想试一试,结果变成了死循环。
2010-11-09 10:58
快速回复:新人再来问问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012946 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved