鱼C论坛

 找回密码
 立即注册
查看: 3907|回复: 4

输入三边长,判断是什么三角形

[复制链接]
发表于 2013-2-26 20:58:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. /*题目:输入三个整数,判断:
  2. 能否以此三个数为边长构成三角形
  3. 若能,是什么样的三角形(等边,等腰,等腰直角,直角,锐角,钝角)*/

  4. /*解题思路:先用a1,b1,c1记录原值,然后将三个数排序,再进行判断*/
  5. #include <stdio.h>

  6. int main(void)
  7. {
  8.     int function (int a,int b);
  9.     int a,b,c;
  10.         int a1,b1,c1;
  11.     printf("请输入三边边长:");
  12.         scanf("%d%d%d",&a,&b,&c);
  13.         a1=a;
  14.         b1=b;
  15.         c1=c;
  16.        
  17.         function(a,b);
  18.         function(b,c);
  19.         function(a,c);
  20.        
  21.         if(a>0 && a+b>c)
  22.         {
  23.             if(a*a+b*b==c*c)
  24.                 {
  25.                     if(a==b)
  26.                          printf("%d,%d,%d 能组成等腰直角三角形",a1,b1,c1);
  27.                         else
  28.                          printf("%d,%d,%d 能组成直角三角形",a1,b1,c1);
  29.                 }
  30.                  else
  31.                  {
  32.                      if(a*a+b*b>c*c)
  33.                          {
  34.                              if(a==c)
  35.                                   printf("%d,%d,%d 是等边三角形",a1,b1,c1);
  36.                                  else
  37.                                  {
  38.                                      if(a==b || b==c)
  39.                                          printf("%d,%d,%d 是等腰锐角三角形",a1,b1,c1);
  40.                                          else
  41.                                              printf("%d,%d,%d 是锐角三角形",a1,b1,c1);
  42.                                  }
  43.                          }
  44.                          else
  45.                          {
  46.                              if (a==b)
  47.                                   printf("%d,%d,%d 是等腰钝角三角形",a1,b1,c1);
  48.                                  else
  49.                                   printf("%d,%d,%d 是钝角三角形",a1,b1,c1);
  50.                          }
  51.                  }
  52.         }
  53.         else
  54.          printf("%d,%d,%d 不能组成三角形",a1,b1,c1);
  55. }
  56. int function(int a,int b)
  57. {
  58.     int t;
  59.         if (a>b)
  60.         {
  61.             t=a;
  62.             a=b;
  63.             b=t;
  64.         }

  65.         return 0;

  66. }

  67. /*测试时,输入3 0 1 输出的是锐角三角形,不知道问题出在哪里?*/
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-26 22:44:10 | 显示全部楼层
  1. #include <stdio.h>

  2. bool yesorno(float, float, float); //函数声明

  3. void main()
  4. {

  5. float a, b, c; //定义三条边
  6. bool s; //布尔型变量
  7. char ch;

  8. do
  9. {
  10. printf("请输入3角形的三条边:\n");
  11. printf("a = ");
  12. scanf("%f", &a);
  13. printf("b = ");
  14. scanf("%f", &b);
  15. printf("c = ");
  16. scanf("%f", &c);
  17. printf("\n");

  18. //调用函数, 判断能否组成三角形, 能返回真, 否则返回假

  19. s = yesorno(a, b, c);

  20. if(s)
  21. {
  22. printf("这三个数组成的3角形是: ");

  23. if(a == b && b == c)
  24. {
  25. printf("等边3角形\n");
  26. }
  27. else
  28. {
  29. if(a != b && b != c && a != c)
  30. printf("不等边3角形\n");
  31. else
  32. printf("等腰3角形\n");
  33. }

  34. }
  35. else
  36. {
  37. printf("你输入的三个数%f, %f, %f ,它们不能组成3角形!\n", a, b, c);
  38. }

  39. printf("还要继续判断吗?(Y/n): ");
  40. while((ch = getchar()) != '\n')
  41. continue; //去掉缓冲区中的所有字符, 准备下次输入
  42. ch = getchar(); //输入是否进行继续

  43. }while((ch == 'Y') || (ch == 'y'));


  44. }


  45. bool yesorno(float a, float b, float c)
  46. {
  47. if((a + b > c) && (a + c > b) && (c + b > c))
  48. return true;
  49. else
  50. return false;

  51. }
复制代码

这是我以前写的, 你参考一下. 三角形的条件是任意两边的和大于第三边吧
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-2-28 10:42:35 | 显示全部楼层

是啊,所以我先排序,只要较小的两边之和大于第三边就行。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-28 11:49:29 | 显示全部楼层
你上面没有判断两边之和大于大三边吧?function(a,b);只是函数调用了, 调用完后, 这个函数相当于什么事也没做, 当你输入3 0 1时if(a>0 && a+b>c)成立, 进去后else成立,之后if(a*a+b*b>c*c)成立,之后是else里面的else成立, 之后输出锐角  
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-28 11:50:09 | 显示全部楼层
关键是你没有判断两边之和大于大三边, 你那函数调用那里出错了
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表