真的不会,有人能指导吗

img

img


这一题真的想了好久,还是不会写,来个会的人指导我该怎么写吧,用c语言来写

直角三角形满足a²+b²=c²的关系,由于三条边边长排列顺序无所谓,可以假设a≤b≤c,用一个三重循环判断a²+b²是否等于c²即可,注意循环中b的起始值为a,c的起始值为b。

不限时间的话,直接三重循环穷举就行了

仅供参考!谢谢!

img

#include <stdio.h>

void show(int start, int end)
{
    if (end < 4 || start < 1 || start >= end || end - start < 2)
    {
        printf(" NO ");
        return;
    }

    int n = end - start + 1;
    int a, b, c, flag = 1;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            for (int k = 0; k < n; k++)
            {
                a = start + i;
                b = start + j;
                c = start + k;
                if ((a * a + b * b) == c * c && a < b)
                {
                    flag = 0;
                    printf("%d %d %d ", a, b, c);
                }
            }
        }
    }

    if (flag)
        printf(" NO ");
}

int main()
{
    int n;
    printf("输入数据组数:");
    scanf("%d", &n);

    int arr[n][2];
    puts("\n输入各组数据之间用空格隔开:");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < 2; j++)
            scanf("%d", &arr[i][j]);
    }

    for (int i = 0; i < n; i++)
    {
        show(arr[i][0], arr[i][1]);
    }

    return 0;
}