薄荷泡泡 发表于 2019-11-14 20:23

测试超时,怎么改

给定三条边,请你判断一下能不能组成一个三角形。
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Sample Input
2
1 2 3
2 2 2
Sample Output
NO
YES
代码如下

#include <stdio.h>
int main()
{
        int m, i;
        double a, b, c;
        scanf("%d", &m);
        for (i = 1; i <= m; i++)
        {
                while (0 < scanf("%lf%lf%lf", &a, &b, &c) < 1000)
                {
                        if ((a + b) > c && (a + c) > b && (c + b) > a)
                                printf("YES\n");
                        else
                                printf("NO\n");
                }
        }
}
显示超时,怎么改呀,谢谢

倪沁东 发表于 2019-11-14 22:26

#include <stdio.h>
int main()
{
    int m, i;
    double a, b, c;
    scanf("%d", &m);
    for (i = 1; i <= m; i++)
    {

      scanf("%lf%lf%lf", &a, &b, &c);
      if(a>0&a<1000&b>0&b<1000&c>0&c<1000)
      {
            if ((a + b) > c && (a + c) > b && (c + b) > a)
                printf("YES\n");
            else
                printf("NO\n");
      }
      else
            printf("输入有误!");
      }
      return 0;
}



班门弄斧,希望能帮到你!你的while是个死循环,因为scanf的返回值不是a,b,c,而是一个int型数(scanf函数返回成功读入的数据项数),我也是初学者,希望你能善用调试(debug)功能,很有益处!
页: [1]
查看完整版本: 测试超时,怎么改