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 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题