直角三角形满足a²+b²=c²的关系,由于三条边边长排列顺序无所谓,可以假设a≤b≤c,用一个三重循环判断a²+b²是否等于c²即可,注意循环中b的起始值为a,c的起始值为b。
不限时间的话,直接三重循环穷举就行了
仅供参考!谢谢!
#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;
}