有没有代码大神帮忙解决一下c语言的问题,直接上答案,谢谢(c++)

如题所述

第1个回答  2018-10-23
【解题思路】
三角形这道题,有几个关键点:
1.必须先对两个三角形的三个边进行排序,这样才好求比例,不会造成混乱。
2.必须判断两个三角形的三个边能否构成三角形,也就是说,大边不能大于等于两个小边的和。比如1,2,3是构不成一个三角形的。
3.用三边判断三角形相似时,由于比值可能不是整数倍,所以必须使用小数进行比较。比如14,21,28和6,9,12这两个明显就是相似三角形,但它们的比分化例值是7分之3,不是整数,所以在编程中需要用小数进行比较,否则会出错。
明确了这三个关键点,程序就很好写了,代码如下:

【程序代码】
#include <iostream>
#include <stdio.h>
int main()
{int a,b,c,a1,b1,c1,T,n;               //三角形边长和T
 scanf("%d",&T);                       //输入组数T
 for(;T>0;T--)                         //根据T决定输几组数
    {scanf("%d%d%d",&a,&b,&c);         //输入第一组数
     if(b<a) {n=b;b=a;a=n;};           //如果b小于a,则b和a对调
     if(b>c) {n=b;b=c;c=n;};           //如果b大于c,则b和c对调
     if(b<a) {n=b;b=a;a=n;};           //如果b小于a,则b和a对调
     scanf("%d%d%d",&a1,&b1,&c1);      //输入第二组数
     if(b1<a1) {n=b1;b1=a1;a1=n;};     //如果b1小于a1,则b1和a1对调
     if(b1>c1) {n=b1;b1=c1;c1=n;};     //如果b1大于c1,则b1和c1对调
     if(b1<a1) {n=b1;b1=a1;a1=n;};     //如果b1小于a1,则b1和a1对调
     if(c>=a+b||c1>=a1+b1)             //判断两组数是否符合三角形三边
      {printf("三个边构不成三角形\n"); //输出提示信息
       continue;}                      //输入下一组数据
     if((double)a/a1==(double)b/b1&(double)a/a1==(double)c/c1)
        printf("yes!\n");              //如果三边比相等显示YES 
     else printf("no!\n");             //否则显示NO 
     }                                 //结束for循环 
 system("PAUSE");                      //暂停屏幕,以看清结果
 return 0;}                            //结束程序

至于第二题,那就是输出绝对值,也就是说不管9还是-9,最后的距离都是9。具体代码我就不贴了,如果不明白,可以加我QQ20428920问。

相似回答