Winter_purgatory 2019-09-23 23:08 采纳率: 0%
浏览 567

请问错误在哪,为何没有办法让能够构成的三角形正确输入

#include
#include
int main()
{
unsigned a,b,c;
double s,P,A;
s=(a+b+c)/2;
a,b,c!=0;
scanf("%d,%d,%d",&a,&b,&c);

if((a+b>c)&&(a+c>b)&&(b+c>a))
{
A=sqrt(s*(s-a)*(s-b)*(s-c)),P=a+b+c;
printf("area = %02f; perimeter = %02f",A,P);
}
else 
{
printf("These sides do not correspond to a valid triangle");
}
return 0;

}
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(s−a)(s−b)(s−c)​​​,其中s=(a+b+c)/2。
输入格式:

输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:

如果输入的边能构成一个三角形,则在一行内,按照

  • 写回答

2条回答 默认 最新

  • qtchen_1988 2019-09-24 10:52
    关注

    1.你先s=(a+b+c)/2; 运行得 s 然后才输入scanf("%d,%d,%d",&a,&b,&c); 这样得到的s值肯定不对;
    2.浮点型跟整型要注意区分转换;

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        unsigned a,b,c;//三边均为为正整数
        double s,P,A;
    
        printf("Please enter 3 positive integers,e.g: 3,4,5\n");
        scanf("%d,%d,%d",&a,&b,&c);
        s = (double)(a+b+c)/2.0;
    
        if((a+b>c)&&(a+c>b)&&(b+c>a))
        {
            A=sqrt(s*(s-a)*(s-b)*(s-c)),P=a+b+c;
            printf("area = %0.2lf; perimeter = %0.2lf\n",A,P);
        }
        else
        {
            printf("These sides do not correspond to a valid triangle\n");
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器